Tengo un enrutador express y estoy configurando algunas rutas para él, paso un validador para los datos y un controlador, pero el validador tiene que funcionar con algunas promesas, así que necesito colocar una espera, el código que escribí se ve como esto:
constructor() { this.router = express.Router(); this.router.use(express.json()); this.router.use(express.text({ type: ['text/plain', 'text/html'] })); } async addCreateTaskRoute(validator, handler) { if (!handler) { throw Error('cannot add empty handler'); } this.router.post('/tasks', await validator, handler); return this; }¿Te parece bien esta solución? ¿Hay más opciones? El proyecto en el que está incluido es un middleware, y el validador y los controladores provienen de otros módulos y el tipo de ellos es Express RequestHandler
Su validator debe llamar a next() de forma asíncrona después de una validación exitosa, esto luego invocará el siguiente middleware, que es handler . Después de una validación fallida, se devuelve un error y no se llama a next() para que no se procesen más middlewares.
async function validator(req, res, next) { var valid = await validationResult(...); if (valid) next(); else res.status(400).end("Error message"); } this.router.post("/tasks", validator, handler);