express-validator 中断验证器链

express-validator Break validator chain

我正在使用 express 的 express-validator 插件

var input = {
            'username': {
                notEmpty: true,
                isEmail: {
                    errorMessage: 'Invalid Email.'
                }
            },
            'password': {
                notEmpty: true,
                errorMessage: 'Invalid Password' // Error message for the parameter
            }
        };

    req.checkBody(input);
    var errors = req.validationErrors();
    if (errors) {
        console.log(errors);
    }

如果我将用户名作为空输出传递

[ { param: 'username', msg: 'Invalid param', value: '' },
  { param: 'username', msg: 'Invalid Email.', value: '' },
  { param: 'password', msg: 'Invalid Password', value: '' } ]

如果任何验证失败,如何中断链。

此问题的修复终于在 v3.0.0 中完成!

req.getValidationResult().then( result => {
    var errors = result.useFirstErrorOnly().array();
    // enjoy an array with no duplicated errors for any given parameter!
});

更新:在较新版本的 express-validator 中,您只需将一个选项传递给 validationResult.array():

var errors = validationResult(req).array({ onlyFirstError: true });

您似乎需要为空参数添加错误消息:

用户名:{ 不是空的: { 错误消息:'Username must not be emtpy' }, 是电子邮件:{ 错误消息:'Invalid Email.' } }...