Reputation: 1081
I am using express-validator 5.2.0 in a expressjs app. I implemented the validaiton on a form data. But it does not capture the errors and gives empty errors object. When validation runs it shows the "no error" when I submit the empty form. It should follow the error path and should display the error.
var express = require('express');
var router = express.Router();
const { check, validationResult } = require('express-validator/check');
router.post('/register', [
check('firstName', 'First Name is required').isEmpty(),
check('lastName', 'Last Name is required').isEmpty(),
check('username', 'User Name is required').isEmpty(),
check('password', 'Password is required').isEmpty()
], (req, res, next)=>{
let errors = validationResult(req);
if (!errors.isEmpty()) {
console.log(errors.mapped());
console.log("errors")
return res.render('auth/register', { errors: errors.mapped() })
}else{
console.log('no errors')
return res.render('auth/login');
}
Upvotes: 10
Views: 28738
Reputation: 477
In your snippet you have not added a validtor to check if a value is not empty. You could achieve this by doing:
check('firstName', 'First Name is required').notEmpty()
.notEmpty() adds a validator to check if a value is not empty; that is, a string with a length of 1 or bigger.
https://express-validator.github.io/docs/validation-chain-api.html#notempty
Upvotes: 9
Reputation: 41440
check('firstName', 'First Name is required').isEmpty()
is enforcing firstName
to be empty.
You will want to change that last part to .not().isEmpty()
, so that you invert the isEmpty
validator.
Might also be of your interest: https://github.com/express-validator/express-validator/issues/476
Upvotes: 25