如何使用expres-validator获得验证错误?

时间:2019-04-30 22:02:11

标签: javascript node.js validation express express-validator

我刚刚开始学习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方法中有一个数组?

提前谢谢

1 个答案:

答案 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示例复制代码,它将正常工作。