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

219
Vistas
¿Cómo comparto correctamente el contexto usando express y mecanografiado?

Me gustaría exponer un valor a todos los controladores de solicitudes usando express & typescript. Me gustaría poder "inyectar" este valor desde un middleware (o de alguna otra manera), el punto es que debería ser fácil burlarse de él en caso de que lo necesite.

Se me ocurrió esta solución:

 // The context type, I'd like to be able to inject this using the middleware below. // In a real scenario think of this like a database connection, etc. type RequestContext = { foo: string } // The type enriching the Request type with the context field type HasContext = { context: RequestContext } // Middleware attaching the context to the request const contextMiddleware = (context: RequestContext) => (req: Request & Partial<HasContext>, _res: Response, next: NextFunction) => { req.context = context next() } // Now an actual route using the extra type const mainRoute = express.Router().get('/test', (req: Request & HasContext, res) => { res.json({ context: req.context }) }) // Adding the middlewares and listen app.use(contextMiddleware({ foo: 'bar' })) app.use(mainRoute) app.listen(8000)

Mis preguntas:

  • ¿Es esta la forma prevista de hacer esto usando express? Busqué la API pero no pude encontrar una solución mejor
  • Los datos extra se adjuntan a la solicitud. ¿Hay alguna otra forma de hacer esto sin mutar la solicitud o la respuesta en sí?
  • El tipo Request & HasContext debe definirse en cada solicitud que use este contexto. ¿Hay una mejor manera?
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede sobrescribir la interfaz de Request expresa para incluir su propiedad de context . De esta manera, no tiene que especificar el tipo en ninguna parte. También mantendrá todas las demás propiedades que normalmente tiene Request .

 declare global { namespace Express { interface Request { context: RequestContext } } }

Recomendaría no usar el objeto Request para almacenar información. Express recomienda el uso de la propiedad res.locals .

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