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", но я не вижу его)