代码之家  ›  专栏  ›  技术社区  ›  Addictd

如何在validationResult中使用express validator在字段为空时生成错误

  •  0
  • Addictd  · 技术社区  · 7 年前

    我正在使用express validator。

    如果字段为空,我想在validationResult中生成一个错误。

    router.post('/register',[
        check('name').isEmpty().withMessage('Name field cannot be empty.'),
        check('email').isEmail().withMessage('Enter valid email address.'),
        check('username').isEmpty().withMessage('Username cannot be empty.'),
        check('password').isEmpty().matches('password2').withMessage('Password dont match.')
    ], function(req, res, next) {
    
      const errors = validationResult(req);
      console.log(errors.array());
    
      if (!errors.isEmpty()) {
        res.render('register2',{
            errors: errors.mapped(), 
            name: req.body.name,
            email: req.body.email,
            username: req.body.username,
            password: req.body.password,
            password2: req.body.password2
        });
      }
    });
    

    当名称字段和用户名字段为空时,我想生成错误,但我只得到这些字段的错误:

    [ { location: 'body',
    param: 'email',
    value: '',
    msg: 'Enter valid email address.' },
    { location: 'body',
    param: 'password',
    value: '',
    msg: 'Password dont match.' } ]
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Mika Sundland    7 年前

    你现在做的与你想要的相反。执行此操作时:

    check('username').isEmpty().withMessage('Username cannot be empty.'),
    

    您希望用户名为空,如果不是,则发出错误。您可以将其更改为:

    check('username').not().isEmpty().withMessage('Username cannot be empty.'),
    

    或:

    check('username').exists().withMessage('Username cannot be empty.'),
    

    相反