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.
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