我想从第一个中间件传递一些变量到另一个中间件,我试着这样做,但有“req。有些变量是一个给定的‘未定义’”。
//app.js
..
app.get('/someurl/', middleware1, middleware2)
...
////middleware1
...
some conditions
...
res.somevariable = variable1;
next();
...
////middleware2
...
some conditions
...
variable = req.somevariable;
...
v4。x API文档
这就是res.locals对象的作用。不支持直接在请求对象上设置变量,也没有相关文档。locals保证在请求的整个生命周期内保持状态。
引用文件:
对象,其中包含作用域为的响应局部变量
请求,因此仅对期间呈现的视图可用
请求/响应周期(如果有的话)。否则,这个属性为
和app。locals一样。
此属性对于公开请求级信息非常有用,例如
请求路径名、经过身份验证的用户、用户设置,等等。
app.use(function(req, res, next) {
res.locals.user = req.user;
res.locals.authenticated = !req.user.anonymous;
next();
});
在下一个中间件中检索变量:
app.use(function(req, res, next) {
if (res.locals.authenticated) {
console.log(res.locals.user.id);
}
next();
});