Node JS + Express - валидация пользователя

День добрый! Пытаюсь сделать валидацию пользователя на сервере. Бэк-енд с фронтом ещё не связан, для тестирования сервера использую postman. Я специально раздал разные коды ошибок что бы видеть какое условие не сработало, но сервер возвращает всегда 501, то есть он всегда сваливается в последний else. Если я убираю проверку(строчку) if (userValid === true), то всё нормально. Мне приходит passwordHash. Я не использую плагины для валидации, т.к. я только учусь и хочу разобраться как это работает. На самом деле у меня кончились идеи как это исправить, мне кажется я перепробовал всё на свете)

router.post('/', function (req, res) {
let user = new userModel;
user.username = req.body.username;
let password = req.body.password;

let userValid = () => {
    //нужен сабмит в скобках?
    if (/^[a-zA-Z1-9]+$/.test(req.body.username) === false) {
        return res.sendStatus(400);
    }

    else if (req.body.username.length < 4 || req.body.username.length > 20) {
        return res.sendStatus(401);
    }

    else if (parseInt(req.body.username.substr(0, 1))) {
        return res.sendStatus(402);
    } else {return true}
    //что валидация должна ретурнить если всё ок?
};

if (userValid === true) {
    bcrypt.hash(password, 10, function (err, hash) {
        if (err) {
            console.log(err);
            res.sendStatus(403)
        } else {
            user.password = hash;
            user.save(function (err) {
                if (err) {
                    res.sendStatus(500)
                } else {
                    console.log(config);
                    let token = jwt.sign({username: user.username}, config.secretKey);
                    res.send(token)
                }
            })
        }
    })
} else {
    res.sendStatus(501)
}

});

Разве что есть ещё 1 вариант из доки, но я не понимаю что именно проверяет эта валидация? Что на сервер отправили логин без пробелов или не пустое поле? И что мне делать с false?

 let userValid = document.getElementByName(user.username);
 userValid.addEventListener("submit", function (event) {
     if(!userValid.validity.valid) {
          event.preventDefault();
     }

 }, false);

P\S: Я уверен что есть более простой и короткий способ сделать эту валидацию, что-то вроде "просто добавь атрибут required к полю input", но я не вижу его)


Ответы (0 шт):