Express-validator不会产生错误,即使它会产生错误

时间:2020-07-16 16:58:22

标签: node.js express

我使用的是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"
}

1 个答案:

答案 0 :(得分:1)

我还没有尝试运行您的代码,但是我至少看到了一件看起来不合适的东西。 在您的代码中,您选中了 if (!errors.isEmpty) {,但在文档的官方示例中,它的检查方式是: if (!errors.isEmpty()) {

errors.isEmpty是一个返回true或false的函数,指示是否存在任何错误。由于它是一个函数,因此简单地检查if (!errors.isEmpty) {总是错误的。