Пользовательская ошибка экспресс-валидатора не работает
Я использую экспресс-валидатор для проверки ввода, а также использую Sequelize ORM для запросов к базе данных. Попытка проверить пользовательскую функцию на экспресс-валидаторе. Функция всегда терпит неудачу, независимо от вывода. Вот тело валидатора.
Валидатор:
body('firmName').notEmpty().withMessage('Firm Name is required.').custom((name, { req, loc, path }) => {
Firm.findOne({ where: { firmName: name }}).then(firm => {
if(firm != null) {
return Promise.reject('errr')
} else {
return Promise.resolve('Ok')
}
}).catch(err => {
console.log(err)
return Promise.reject('errr')
})
}).withMessage('Firm Name already exists.'),
Вот как я отправляю результат со своего контроллера:
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
Sequelize работает нормально, но проверка всегда не выполняется. Я попытался вернуть логическое значение, но это тоже не удалось.
1 ответ
Console .log в errors.array(), посмотрите, что это за сбои, и исправьте их.
if (!errors.isEmpty()) {
console.log(errors.array());
return res.status(422).json({ errors: errors.array() });
}