экспресс-валидатор несколько пользовательских проверок - PullRequest
0 голосов
/ 28 января 2019

Мне нужно проверить, существует ли в базе данных пользователь с переданным email ИЛИ login.

const userModel = new User();
const user = await userModel.findByLogin(req.body.email, req.body.login);

if (user) {
  req.checkBody('email', 'Email already in use').custom(value => user.email === value ? Promise.reject('Email already in use') : value);
  req.checkBody('login', 'Login already in use').custom(value => user.login === value ? Promise.reject('Login already in use') : value);
}

const errors = req.validationErrors();

findByLogin принимает email и login и возвращает существующие user или null.Проверка электронной почты работает как ожидалось.Но если я попытаюсь зарегистрировать пользователя с уникальным email и существующим login, это не создаст никаких ошибок (errors is false).

1 Ответ

0 голосов
/ 28 января 2019

Я только что испортил асинхронную проверку.Я не могу использовать validationErrors в моем случае, поэтому я изменил его на getValidationResult, и теперь он работает нормально.Вот результат:

const userModel = new User();
const user = await userModel.findByLogin(req.body.email, req.body.login)
if (user) {
  req.checkBody('email', 'Email already in use').custom(value => user.email !== value ? value : Promise.reject('Email already in use')).withMessage('Email already in use');
  req.checkBody('login', 'Login already in use').custom(value => user.login !== value ? value : Promise.reject('Login already in use'));
}

const errors = await req.getValidationResult();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...