Estoy usando express-validator 5.2.0 en una aplicación expressjs. Implementé la validación en un formulario de datos. Pero no captura los errores y da un objeto de errores vacío. Cuando se ejecuta la validación, muestra "sin error" cuando envío el formulario vacío. Debe seguir la ruta de error y debe mostrar el 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'); }check('firstName', 'First Name is required').isEmpty() a firstName a estar vacío.
Querrás cambiar esa última parte a .not().isEmpty() , para que inviertas el validador isEmpty .
También podría ser de su interés: https://github.com/express-validator/express-validator/issues/476
En su fragmento, no ha agregado un validador para verificar si un valor no está vacío . Podrías lograr esto haciendo:
check('firstName', 'First Name is required').notEmpty().notEmpty() agrega un validador para verificar si un valor no está vacío; es decir, una cadena con una longitud de 1 o mayor.
https://express-validator.github.io/docs/validation-chain-api.html#notempty