我正在研究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');
});
答案 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
数组作为路由的另一个处理程序传入。它的处理方式与您的处理程序相同:
check()
函数的指定,检查参数是否有效req
对象添加信息next()
进入下一个验证或您的处理程序。然后,当您要检查结果时,请使用validationResult()
(您拼写错误并称为req
的方法,而不是将其传递给该方法)。