2014-01-16 5 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 -объект узла, хотя я бы тоже не рекомендовал это ...

+0

Очевидно, что это не сработает или является грубым упрощением делать что-то более сложное. У вас будет много сеансов, работающих параллельно. Запрошенный пользователь хотел получить доступ к правильному сеансу во время вызовов функций. Это, вероятно, будет работать только в том случае, если node.js знает, на какой сеанс он действует, и может открыть это через API. – matanster

Смежные вопросы