Пользовательская ошибка экспресс-валидатора не работает

Я использую экспресс-валидатор для проверки ввода, а также использую 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() });
}

    
Другие вопросы по тегам