如何使用express-validator抛出自定义错误?

ras*_*862 3 validation node.js express

我正在通过POST方法验证表单.我想在已注册电子邮件地址时将错误输入express-validator,因此当我执行req.validationErrors()时,它会被包括在内.像这样的东西:

req.checkBody('inputFirstName', 'First name empty').notEmpty();
req.checkBody('inputLastName', 'Last name empty').notEmpty();
db.User.find({email: req.body.inputEmail}, function (err, user){
        if(user){
            var error = {param: "inputEmail", msg: "Email address already registered", value: ''};
            expressValidator._errors.push(error);
        }
    });
Run Code Online (Sandbox Code Playgroud)

谢谢.

小智 5

你可以这样做:

req.checkBody('inputFirstName', 'First name empty').notEmpty();
req.checkBody('inputLastName', 'Last name empty').notEmpty();
var errors = req.validationErrors();
db.User.find({email: req.body.inputEmail}, function (err, user){
        if(user){
            var error = {param: "inputEmail", msg: "Email address already registered", value: req.body.email};
            if (!errors) {
                errors = [];
            }
            errors.push(error);
        }

        // Here need  to be next part of action - not outside find callback!
    });
Run Code Online (Sandbox Code Playgroud)

但我认为在请求方验证中加入一些mongoose验证是个坏主意.您可以使用一些模式方法,例如预先保存,在那里进行验证.