как сгенерировать ошибку, когда поле пустое, используя экспресс-валидатор в validationResult

Я использую экспресс-валидатор.

Я хочу сгенерировать ошибку в 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.' } ]

person Addictd    schedule 30.12.2017    source источник


Ответы (1)


В настоящее время вы делаете противоположное тому, что хотите. Когда вы делаете это:

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

вы хотите, чтобы имя пользователя было пустым, и выдает ошибку, если это не так. Вы можете изменить его на:

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

or:

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

вместо.

person Mika Sundland    schedule 30.12.2017