Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

256
Visualizações
Express - Validación express-validator no muestra errores

Estoy seguro de que esto no es un problema, sino que no lo estoy usando de la manera correcta.

Quiero validar el cuerpo de la solicitud del usuario y, de acuerdo con la documentación, todo el trabajo se realiza en el archivo de ruta. Y dividí mi trabajo en rutas y archivos de controladores. Pasé un middleware de validación y necesita ser validado pero no lo es. Algo mal en el medio.

mi ruta es:

 router.post( '/signup', userController.validateRequest, userController.hashPassword, userController.signup );

En lugar de esto, si lo hiciera de esta manera:

 router.post( '/signup', body('email').isEmail().withMessage('Please enter a valid email'), body('password') .equals('confirmPassword') .withMessage('Passwords do not match'), userController.hashPassword, userController.signup );

Eso funcionará, pero esto hará que el código se ensucie si hay varias solicitudes de validación.

Solo quiero saber cuál es la forma correcta, si separo las solicitudes y el middleware de validación O tengo que pasar la validación en el archivo de ruta SOLAMENTE . Por favor, corrígeme si lo estoy haciendo de forma incorrecta.

Mi middleware de validación es:

 exports.validateRequest = (req, res, next) => { if (req.body.email) { body('email').isEmail().withMessage('Please enter a valid email'); } if (req.body.password_confirm) { body('password') .equals('confirmPassword') .withMessage('Passwords do not match'); } next(); };

Y mi controlador donde se muestran todos los mensajes de error

 exports.signup = async (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } ............
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Bueno, prefiero Joi , el validador más poderoso.

 async createAccountSchema(req, res, next) { // create schema object const schema = Joi.object({ email: Joi.string().email().required(), password: Joi.string() .min(8) .required(), confirmPassword: Joi.string() .valid(Joi.ref('password')) .required() .label('Passwords') .messages({ 'any.only': '{{#label}} are not the same' }), }) // schema options const options = { abortEarly: false, // include all errors allowUnknown: true, // ignore unknown props stripUnknown: true, // remove unknown props } // validate request body against schema const result = schema.validate(req.body, options) if (result.error) { return res.status(400).json(result.error.details) } else { result.value.email = result.value.email.trim().toLowerCase() result.value.password = result.value.password req.body = result.value next() } }

Ese es un ejemplo para el validador. req.body al validador y hace el trabajo.

Después de validar, configura su req.body en el resultado de la validación y usa next()

 app.use("/", createAccountSchema, userController.signup)
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda