我刚刚开始学习express-validator。我已经阅读了express-validator的文档,但是我的问题可能在我不完全理解的文档中有答案。 我想检查一些值,但是如果这些值与验证不匹配,我不知道如何获取错误。
true
此外,const { check, validationResult } = require('express-validator/check');
const router = require("express").Router();
router.post("/", (req, res, next)=>{
// validate user input
const username = req.body.username;
const email = req.body.email;
const password = req.body.password;
check("username")
.not().isEmpty().withMessage("Username must not be empty!");
check("email")
.not().isEmpty().withMessage("Email must not be empty!");
check("password")
.not().isEmpty().withMessage("Password must not be empty!");
//Get check results
});
module.exports = router;
返回承诺还是同步运行?
并且,在文档中有:
check()
我尝试了app.post('/user', [
check('username').isEmail()], (req, res) => {
const errors = validationResult(req);
...
}
,但是它给了我一个带有某些函数的对象,其中只有validationResult(req)
是isEmpty()
,而其他函数是false,null或undefined。为什么在true
方法中有一个数组?
提前谢谢
答案 0 :(得分:1)
docs中的示例:
const { check, validationResult } = require('express-validator/check');
app.post('/user', [
// username must be an email
check('username').isEmail(),
// password must be at least 5 chars long
check('password').isLength({ min: 5 })
], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
User.create({
username: req.body.username,
password: req.body.password
}).then(user => res.json(user));
});
如果您想让代码正常工作,则必须遵循相同的结构。
如果validationResult发现任何错误,您的服务器将对此进行响应:
{
"errors": [{
"location": "body",
"msg": "Invalid value",
"param": "username"
}]
}
在您的情况下,您可以直接从此docs示例复制代码,它将正常工作。