1

我使用节点 v8.11.1、express 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

我基本上将我的代码基于文档中的示例,但是当我尝试以useFirstErrorOnly某种方式合并时我一直失败。

如果我不合并useFirstErrorOnly我会同时收到email emptynot a valid email消息,所以我想我的代码工作正常,我就是无法完成useFirstErrorOnly工作。

有什么建议么 ?谢谢

4

1 回答 1

3

express-validator 维护者在这里。

你不再使用useFirstErrorOnly函数了。这是 express-validator v3 中的一个东西,但是在 v4 发布之后,它就被停产了。
你现在必须这样做validationResult(req).array({ onlyFirstError: true })

如果可以,请在我们建议使用.useFirstErrorOnly()* 的文档中指出我的位置,以便我修复它。无论如何,我必须提到,从那时起
,这一直在旧用户的升级指南中。

* 另外请记住不要遵循 2017 年 8 月之前发布的任何 express-validator 教程,因为这些教程可能已经过时了。

于 2018-05-21T05:01:24.320 回答