express-validator 一些自定义验证检查
express-validator few custom validations check
我需要检查通过 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
和 returns 现有的 user
或 null
。电子邮件验证按预期工作。但是,如果我尝试使用唯一的 email
和现有的 login
注册用户,它不会产生任何错误(errors
是 false
)。
我刚刚搞砸了异步验证。我不能在我的情况下使用 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();
我需要检查通过 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
和 returns 现有的 user
或 null
。电子邮件验证按预期工作。但是,如果我尝试使用唯一的 email
和现有的 login
注册用户,它不会产生任何错误(errors
是 false
)。
我刚刚搞砸了异步验证。我不能在我的情况下使用 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();