表达验证器useFirstErrorOnly不起作用

时间:2018-05-19 23:09:41

标签: node.js express middleware express-validator

我使用节点v8.11.1,表达4.16.3和express-validator 5.2.0。我对同一个电子邮件字段进行了几次检查。这是我现在的路线

const { body, validationResult } = require('express-validator/check');

router.post('/save',
[
  body('email').not().isEmpty().withMessage('email empty'),
  body('email').isEmail().withMessage('not a valid email')
],
(req, res)=>{
  const errors = validationResult(req).useFirstErrorOnly();
  if (!errors.isEmpty()) {
    req.session.msgs = errors.array();
    res.redirect('/signup');
  }

   else {
      //save the email in db
   }
});

我收到以下错误TypeError: validationResult(...).useFirstErrorOnly is not a function

我基本上将我的代码基于docs中的示例,但是当我尝试以某种方式合并useFirstErrorOnly时,我仍然失败了。

如果我不合并useFirstErrorOnly,我会收到email emptynot a valid email消息,所以我猜我的代码工作正常,我无法使useFirstErrorOnly工作。

有什么建议吗?感谢

1 个答案:

答案 0 :(得分:0)

express-validator维护者在这里。

您不再使用useFirstErrorOnly功能。这是快递验证器v3中的一个东西,但是在v4发布之后,它已经停止了 您现在必须validationResult(req).array({ onlyFirstError: true })

如果可以,请在我们建议使用.useFirstErrorOnly() *的文档中指出我的位置,以便我可以修复它。
无论如何,我必须提一下,从那以后,这已经存在于遗留用户upgrade guide中。

*另外请记住不要遵循2017年8月之前发布的任何快速验证器教程,因为这些教程可能过时了。