2014-01-16 29 views
5

我知道全局變量在JavaScript和整體編程中是一個不好的習慣,但我想讓我的用戶會話在我的express.js應用程序中可用,避免將會話參數從我的控制器傳遞到我的模型。NodeJS(Express.js):如何使會話全局

我該如何做到最好?

謝謝!

+1

你真的有「遍傳遞會話參數」?你不能從'req.session'訪問任何地方的會話嗎? – ZimSystem

+2

這意味着全部通過'req'不是嗎.. – matanster

回答

1

我最終解決這個就像這樣:

var appendLocalsToUseInViews = function(req, res, next) 
{    
    //append request and session to use directly in views and avoid passing around needless stuff 
    res.locals.session = req.session; 
    next(null, req, res); 
} 

然後將其添加到中間件:

app.use(appendLocalsToUseInViews); 
-1

,如果你真的想這樣做,添加請求或會話的global -object節點,雖然我也不會推薦的...

+0

顯然這不起作用,或者是做一些更復雜的事情的簡化。您將有許多會話同時處於活動狀態。請求的人想要在函數調用中訪問正確的會話。這可能只有在node.js知道它正在處理什麼會話並可以通過API公開時纔有效。 – matanster