nodejs - 表示如何在所有路由上创建全局变量?

时间:2015-05-15 13:02:22

标签: node.js express

如何才能使我的LANG在所有路线上都是全局的? 例如:

app.post('/set/lang',function(req,res){
   req.lang = 'en';
   res.json({lang:'en'});
});

app.get('/get/lang',function(){
res.json({lang:req.lang});
});

但返回// {lang:undefined} ??

我怎么能这样做? > / get / lang => return {lang:en}

2 个答案:

答案 0 :(得分:3)

req.lang未定义,因为/get/lang的请求是无状态的,并且不知道/set/lang上完成的请求的状态。

您需要的是会话服务,例如https://github.com/expressjs/session

您可能需要在此处阅读更多内容http://expressjs-book.com/forums/topic/express-js-sessions-a-detailed-tutorial/

我的理解是,您希望将用户语言保存为foreach用户,并让他们通过客户端应用程序中的某种语言选择器进行设置。

另请注意,这个问题令人困惑,因为它也可能引用expressjs中的全局命名参数,您可以使用https://github.com/expressjs/express-params实现这些参数。

或者,它也可能是指输入内容验证,请参阅http://expressjs.com/4x/api.html#app.param

最后没有提供版本我假设它是最新的4.x分支。

答案 1 :(得分:2)

你应该使用app.locals& res.locals。 这里有一个很好的解释: app.locals and res.locals life cycle