我的简单代码不适用于express-validator

时间:2018-12-28 11:50:18

标签: node.js express

我正在研究Express-validator。
“ router.post”通过但未通过验证
我在html中输入了表单和密码。

<body>
    <h1>Hello Guys!</h1>
    <p>Fill in your id number.</p>
    <form action="/yournumber/sub" method="POST">
        <input type="password" name="password">
        <button type="submit">Summit</button>
    </form>
</body>



然后那个密码叫router.post
这是我的路由器代码。
但是无论密码的长度如何,此帖子都会重定向,
我该如何正确做?

    router.post('/yournumber/sub', (req, res, next) => {
    req.check('password').isLength({min: 4});

    var errors = req.validationErrors();
    if (errors) {
      req.session.errors = errors;
      req.session.success = false;
      console.log('error');
    } else {
      req.session.success = true;
      console.log('suc')
    }

    res.redirect('/ab');
});

1 个答案:

答案 0 :(得分:0)

我不知道req.check()标记,也无法在official documentation中找到它,但是

我使用此模块的方式是作为快速中间件。您可以在链接的文档上查看摘录的内​​容。这是您修改后的代码:

const validation = [
  check('password').isLength({min: 4})
];

router.post('/yournumber/sub', validation, (req, res, next) => {
  var errors = validationResult(req);
  if (errors.isEmpty()) {
    // valid
  } else {
    // not valid
  }
});

如您所见,validation数组作为路由的另一个处理程序传入。它的处理方式与您的处理程序相同:

  1. 根据check()函数的指定,检查参数是否有效
  2. 否则,请向req对象添加信息
  3. 致电next()进入下一个验证或您的处理程序。

然后,当您要检查结果时,请使用validationResult()(您拼写错误并称为req的方法,而不是将其传递给该方法)。