Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

331
Vistas
¿Cómo funciona esta función que toma un RequestHandler en el trabajo express?

Estaba navegando a través de algunos ejemplos de código para el servidor Express en GitHub y me encontré con esta función utilizada para envolver los controladores API REST y estaba confundido sobre cómo funciona...

 import { RequestHandler } from 'express'; export const catchErrors = (requestHandler: RequestHandler): RequestHandler => { return async (req, res, next): Promise<any> => { try { console.log(req.body) **// returns requestHandler's req parameter //** return await requestHandler(req, res, next); } catch (error) { next(error); } }; };

Se utiliza para envolver los controladores API REST para detectar errores y pasarlos a un middleware de manejo de errores. Un breve ejemplo de tal uso sería este:

 import {catchErrors} from './error' export const fetchData = catchErrors(async (req: Request, res: Response) => { /// perform data fetching here /// return res.status(200).send() })

Estoy confundido en cuanto a cómo funciona la función catchErrors. Según tengo entendido, el parámetro requestHandler se refiere a la devolución de llamada del controlador REST original. Sin embargo, la siguiente parte de catchError donde dice return async (req, res, next): Promise<any> => {...} ¿De dónde viene esto (req, res, next)? Intenté registrar en la consola el req.body y resultó ser el cuerpo de la solicitud del parámetro requestHandler analizado anteriormente. No entiendo cómo se puede hacer referencia a requestHandler (req, res, next) de esta manera en lugar de decir requestHandler.req (que no funciona)?

Enlace de GitHub donde encontré este código: https://github.com/oldboyxx/jira_clone/blob/master/api/src/errors/asyncCatch.ts

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

catchErrors es solo una función auxiliar para devolver una función de middleware desde otra función de middleware, mejorando o agregando características. en su caso, piense en fetchData como

 async (req, res, next): Promise<any> => { try { console.log(req.body) **// returns requestHandler's req parameter //** const fetchFunction = async (req: Request, res: Response) => { /// perform data fetching here /// return res.status(200).send() } return await fetchFunction(req, res, next); } catch (error) { next(error); } };

que es un middleware válido para express. eche un vistazo a la función de orden superior , el patrón decorador y los cierres , que son el mismo concepto.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda