【问题标题】:express-validator Break validator chainexpress-validator 打破验证者链
【发布时间】:2016-11-06 15:20:52
【问题描述】:

我正在为 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: '' } ]

如果任何一个验证失败,如何阻止链条。

【问题讨论】:

  • 在他们的 github repo 上提出功能请求
  • @hjpotter92 我将删除此问题并提出功能请求
  • 把问题留在这里。一旦该请求得到响应,您就可以回答它。

标签: node.js validation express express-validator


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    看起来您需要为空参数添加错误消息:

    用户名:{ 不是空的: { errorMessage: '用户名不能为空' }, 是电子邮件:{ errorMessage:'无效的电子邮件。' } }...

    【讨论】:

    • 是的,没错,但我的问题不同,这是该库中的一个已知问题
    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多