NodeJS(Express.js):如何使会话全局化

6
我知道在 JavaScript 和整个编程中,全局变量是一种不好的实践方式,但是我想在我的 Express.js 应用程序中使用户会话可用,避免将会话参数从控制器传递到模型中。如何最好地做到这一点呢?感谢!

1
你真的需要“在各处传递会话参数”吗?你不能从req.session任何地方访问会话吗? - Carol Skelly
4
这意味着到处传递 req,对吧? - matanster
2个回答

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);

文档说明指出应使用res.locals来“设置在使用res.render渲染的模板中可访问的变量”。这可能不是实现OP所要求的正确方式。 - undefined

-2

如果你真的想这样做,可以将请求或会话添加到节点的 全局 对象中,尽管我也不建议这样做...


很明显,这样做不起作用,或者只是对执行更复杂操作的简化。您可能会有许多并行活动的会话。询问者希望在函数调用中访问正确的会话。只有当node.js知道它正在为哪个会话而行动,并可以通过API公开其信息时,这可能才有效。 - matanster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接