我想把一些变量从第一个中间件传递给另一个中间件,我也试过这样做,但出现了"req.somevariable
是一个给定的‘未定义的’“。
//app.js
..
app.get('/someurl/', middleware1, middleware2)
...
////middleware1
...
some conditions
...
res.somevariable = variable1;
next();
...
////middleware2
...
some conditions
...
variable = req.somevariable;
...
发布于 2013-09-18 22:43:52
将变量附加到req
对象,而不是res
。
而不是
res.somevariable = variable1;
具备以下条件:
req.somevariable = variable1;
正如其他人所指出的,res.locals
是通过中间件传递数据的推荐方式。
发布于 2015-02-20 03:37:59
我不认为最佳实践是传递像req.YOUR_VAR
这样的变量。您可能需要考虑使用req.YOUR_APP_NAME.YOUR_VAR
或req.mw_params.YOUR_VAR
。
它将帮助您避免覆盖其他属性。
更新: 2020年5月31日
res.locals就是你要找的,对象的作用域是请求。
包含请求范围内的响应局部变量的对象,因此仅对在该请求/响应周期(如果有)期间呈现的视图可用。否则,此属性与app.locals相同。
此属性对于公开请求级别的信息非常有用,例如请求路径名称、经过身份验证的用户、用户设置等。
发布于 2013-09-18 22:43:42
这是因为req
和res
是两个不同的对象。
您需要在添加该属性的同一对象上查找该属性。
https://stackoverflow.com/questions/18875292
复制相似问题