快速验证器一些自定义验证检查

时间:2019-01-28 08:29:17

标签: express express-validator

我需要检查数据库中是否已存在通过emaillogin传递的用户。

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();

findByLoginemaillogin并返回现有的usernull。电子邮件验证按预期工作。但是,如果我尝试使用唯一的email和现有的login注册用户,它不会产生任何错误(errorsfalse)。

1 个答案:

答案 0 :(得分:0)

我只是搞砸了异步验证。我无法使用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();