node.js - 我的简单代码不适用于快速验证器

标签 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');
});

最佳答案

我不知道 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-object
  3. 调用 next() 进行下一个验证或处理程序。

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

关于node.js - 我的简单代码不适用于快速验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53958147/

相关文章:

html - Handlebars 布局中的 CSS 不适用于车身

javascript - 如何将内联 javascript 与 Express/Node.js 中动态生成的内容分开?

javascript - NodeJS + Mongo - 如何与 DOM 交互以从数据库获取数据?

javascript - Node JS,表达结构和需要混淆

javascript - Node/Express 中 GET 和 POST 请求的时间间隔

mysql - 为什么这段代码不返回 json 数据?

javascript - 如何在 Express 上的 app.js 中使用 piwik javascript 代码

node.js - 使用 Amazon Lambda 进行 fork 和连接

node.js - npm安装错误: Error: 404 Not Found: flatmap-stream@0. 1.2

javascript - 尝试使用 Heroku 打开我的 Bootstrap 模板时出现 MIME 类型错误