Я пытаюсь подтвердить запрос на вход в систему, когда он принимает имя пользователя, которое может быть либо адресом электронной почты или именем пользователя, и пароль. Как я могу сделать это с Express-Validator?
Я читаю документацию, и валидатор работает так, что вы должны передать данные в качестве второго аргумента.
Я не уверен, как это сделать с проверкой, чтобы увидеть, если это также имя пользователя или пароль.
router.post("/", (req, res) => {
const { nickname, password } = req.body;
// Create a new object based on email or username
const login = {};
if (nickname.indexOf('@') === -1) {
login.nickname = nickname;
} else {
login.email = nickname;
}
login.password = password;
// JWT Sign...
});
С помощью валидатора, я также хотел бы проверить, если это
- Имя пользователя или адрес электронной почты
- Если это электронное письмо, убедитесь, что это фактическое электронное письмо с использованием isEmail () validator
- Если это имя пользователя, убедитесь, что оно содержит более трех символов, и есть действительное имя пользователя.
Покушение
router.post("/", (req, res) => {
const { nickname, password } = req.body;
// Create a new object based on email or username
const login = {};
if (nickname.indexOf('@') === -1) {
check('nickname').isLength({ 'min': 3 });
login.nickname = nickname;
} else {
check('nickname').isEmail();
login.email = nickname;
}
login.password = password;
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
});
Похоже, валидатор просто не работал.