我使用的是express-validator程序包,在将数据插入数据库之前,我曾尝试对其进行验证,但是由于某种原因,数据没有经过验证并直接插入数据库中。
这是我的代码文件。
router.post(
"/signup",
[
check("name")
.isLength({ min: 3 })
.withMessage("name should be atleast 2 chars"),
check("email").isEmail().withMessage("email is required"),
check("password")
.isLength({ min: 3 })
.withMessage("password should be atleast 2 chars"),
],
signup
);
const signup = (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty) {
res.status(422).json({
error: errors.array()[0].msg,
});
return;
}
const user = new User(req.body);
user.save((err, user) => {
if (err) return res.send("database injection failed error code 400");
return res.json(user);
});
};
如果我输入为
{
"name": "jo",
"email": "random@gmail.com",
"password": "kdfjldkmcs"
}
答案 0 :(得分:1)
我还没有尝试运行您的代码,但是我至少看到了一件看起来不合适的东西。
在您的代码中,您选中了 if (!errors.isEmpty) {
,但在文档的官方示例中,它的检查方式是: if (!errors.isEmpty()) {
。
errors.isEmpty
是一个返回true或false的函数,指示是否存在任何错误。由于它是一个函数,因此简单地检查if (!errors.isEmpty) {
总是错误的。