tutorial res req node app javascript node.js express middleware next

javascript - req - middleware express tutorial



pasando variables al siguiente middleware usando next() en expressjs (4)

Adjunte su variable al objeto req , no res .

En lugar de

res.somevariable = variable1;

Tener:

req.somevariable = variable1;

Editar:

Como otros han señalado, res.locals es la forma recomendada de pasar datos a través de middlewares.

Bueno, mi pregunta es: quiero pasar alguna variable desde el primer middleware a otro middleware e intenté hacer esto, pero había una cantidad requerida. Una variable se da como ''indefinida''.

//app.js .. app.get(''/someurl/'',middleware1,middleware2) ...

////middleware1 ... some conditions ... res.somevariable = variable1; next(); ...

////middleware2 ... some conditions ... variable = req.somevariable; ...

Gracias por responder.


Eso es porque req y res son dos objetos diferentes.

Necesita buscar la propiedad en el mismo objeto al que lo agregó.


Esto es para lo que es el objeto res.locals . Establecer variables directamente en el objeto de solicitud no es compatible ni está documentado. res.locals está garantizado para mantener el estado durante la vigencia de una solicitud.

res.locals

Un objeto que contiene variables locales de respuesta con alcance a la solicitud y, por lo tanto, está disponible solo para la (s) vista (s) representada (s) durante ese ciclo de solicitud / respuesta (si corresponde). De lo contrario, esta propiedad es idéntica a app.locals.

Esta propiedad es útil para exponer información de nivel de solicitud, como el nombre de la ruta de solicitud, el usuario autenticado, la configuración del usuario, etc.

app.use(function(req, res, next) { res.locals.user = req.user; res.locals.authenticated = ! req.user.anonymous; next(); });

Para recuperar la variable en el siguiente middleware:

app.use(function(req, res, next) { if (res.locals.authenticated) { console.log(res.locals.user.id); } next(); });


No creo que la mejor práctica sea pasar variables como req.YOUR_VAR es posible que desee considerar req.YOUR_APP_NAME.YOUR_VAR o req.mw_params.YOUR_VAR

lo ayudará a evitar sobrescribir otros atributos