在expressjs中使用next()将variables传递给下一个中间件
那么我的问题是我想通过一些variables从第一个中间件到另一个中间件,我尝试这样做,但有req.somevariable是一个给定的'未定义'。
//app.js .. app.get('/someurl/',middleware1,middleware2) ...  ////middleware1 ... some conditions ... res.somevariable = variable1; next(); ... 
 ////middleware2 ... some conditions ... variable = req.somevariable; ... 
谢谢回答。
 将你的variables附加到req对象上,而不是res 。 
代替
 res.somevariable = variable1; 
有:
 req.somevariable = variable1; 
编辑:
 正如其他人所指出的, res.locals是通过中间件传递数据的推荐方式。 
在我看来,这是res.locals对象的用途。 直接在请求对象上设置variables不被支持或logging。 res.locals保证在请求期间保持状态。
res.locals
包含作用域为请求的响应局部variables的对象,因此仅可用于在请求/响应周期(如果有)期间呈现的视图。 否则,这个属性和app.locals是一样的。
该属性对于公开请求级信息(如请求path名,authentication用户,用户设置等)非常有用。
 app.use(function(req, res, next) { res.locals.user = req.user; res.locals.authenticated = ! req.user.anonymous; next(); }); 
 我不认为最好的做法是传递像req.YOUR_VARvariables,你可能要考虑req.YOUR_APP_NAME.YOUR_VAR或req.mw_params.YOUR_VAR 
它将帮助您避免覆盖其他属性
 这是因为req和res是两个不同的对象。 
您需要在您添加到的同一个对象上查找属性。