我正在为Web应用程序进行简单登录,但似乎无法正确处理.getValidationResult()
。我花了很多时间在明确验证器的npm文档上,尝试在教程中找到答案,并在Stack Overflow等网站上查找,而没有找到我的问题的答案。也许我只是不知道要问的正确问题。
我想确保
我的问题是使用express-validator .getValidationResult()
的正确方法是什么?
这是令人讨厌的代码:
export let postLogin = (req: Request, res: Response, next: NextFunction) => {
req.assert("email", "Email is not valid").isEmail();
req.assert("password", "Password cannot be blank").notEmpty();
req.sanitize("email").normalizeEmail({ gmail_remove_dots: false });
req.getValidationResult().then(function(result){
if (result != undefined) {
console.log(result.array();
return res.redirect("/login");
}
});
//do other login related stuff
}
我猜这里有一些简单的错误导致了我的错误,但我似乎无法找到它的错误。
答案 0 :(得分:0)
它返回一个名为 验证对象 的对象的承诺。此对象包含有关应用程序所具有的错误的信息。
解释。
运行所有验证并返回验证结果对象 收集错误,同步和异步验证器。
如果有错误,它只会返回错误。以下是该函数返回的一些示例代码。
//The error object
{
"msg": "The error message",
"param": "param.name.with.index[0]",
"value": "param value",
// Location of the param that generated this error.
// It's either body, query, params, cookies or headers.
"location": "body",
// nestedErrors only exist when using the oneOf function
"nestedErrors": [{ ... }]
}
当没有错误显示时,该函数返回isEmpty()
。
如果有任何错误,该函数将返回.array([options])
。错误位于[options]
数组中。
查看this link以获取可能返回的示例代码。
<强>更新强>
您也可以像这样使用它,这更容易 请注意,这是express-validator v4.0.0版本的新API。
const { check, validationResult } = require('express-validator/check');
//go to a link
app.get('/myURL', (req, res, next) => {
// Get the validation result\
const errors = validationResult(req).throw();
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors }); //err.mapped()
});