/** * ======================================== * MIDDLEWARE: handleValidation * ======================================== * * Middleware que procesa los resultados de validación de express-validator. * Se usa DESPUÉS de los validadores para verificar si hubo errores. * * FLUJO DE EJECUCIÓN: * 1. Los validadores (ej: registerValidator) marcan errores * 2. Este middleware recoge esos errores con validationResult() * 3. Si hay errores, devuelve 400 con la lista de errores * 4. Si no hay errores, continúa a la ruta * * ORIGEN: Se importa en las rutas que usan validadores * DESTINO: Si hay errores, termina con 400; si no, continúa a la lógica de la ruta * * EJEMPLO DE USO: * const { registerValidator } = require('../validators/auth.validators'); * router.post('/register', registerValidator, handleValidation, async (req, res) => { * // Si llega aquí, los datos ya fueron validados * }); * * FORMATO DE RESPUESTA CON ERRORES: * { * "errors": [ * { "msg": "Email inválido", "param": "email", "location": "body" }, * { "msg": "Password muy corta", "param": "password", "location": "body" } * ] * } */ const { validationResult } = require('express-validator'); /** * @param {Request} req - Objeto de petición Express * @param {Response} res - Objeto de respuesta Express * @param {Function} next - Función para continuar al siguiente middleware */ module.exports = function handleValidation(req, res, next) { try { // 1. Extrae los errores de validación acumulados por express-validator const errors = validationResult(req); // 2. Si hay errores, devuelve 400 Bad Request con la lista if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } // 3. Si no hay errores, continúa a la siguiente función (la ruta) return next(); } catch (e) { // 4. Si algo falla, pasa el error al manejador de errores de Express return next(e); } };