首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Express.js中的next()将变量传递给下一个中间件

使用Express.js中的next()将变量传递给下一个中间件
EN

Stack Overflow用户
提问于 2013-09-18 22:41:22
回答 6查看 170.5K关注 0票数 261

我想把一些变量从第一个中间件传递给另一个中间件,我也试过这样做,但出现了"req.somevariable是一个给定的‘未定义的’“。

代码语言:javascript
复制
//app.js
..
app.get('/someurl/', middleware1, middleware2)
...

代码语言:javascript
复制
////middleware1
...
some conditions
...
res.somevariable = variable1;
next();
...

代码语言:javascript
复制
////middleware2
...
some conditions
...
variable = req.somevariable;
...
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-09-18 22:43:52

将变量附加到req对象,而不是res

而不是

代码语言:javascript
复制
res.somevariable = variable1;

具备以下条件:

代码语言:javascript
复制
req.somevariable = variable1;

正如其他人所指出的,res.locals是通过中间件传递数据的推荐方式。

票数 255
EN

Stack Overflow用户

发布于 2015-02-20 03:37:59

我不认为最佳实践是传递像req.YOUR_VAR这样的变量。您可能需要考虑使用req.YOUR_APP_NAME.YOUR_VARreq.mw_params.YOUR_VAR

它将帮助您避免覆盖其他属性。

更新: 2020年5月31日

res.locals就是你要找的,对象的作用域是请求。

包含请求范围内的响应局部变量的对象,因此仅对在该请求/响应周期(如果有)期间呈现的视图可用。否则,此属性与app.locals相同。

此属性对于公开请求级别的信息非常有用,例如请求路径名称、经过身份验证的用户、用户设置等。

票数 35
EN

Stack Overflow用户

发布于 2013-09-18 22:43:42

这是因为reqres是两个不同的对象。

您需要在添加该属性的同一对象上查找该属性。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18875292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档