使用 express 在中间件中传递数据的最佳方式

Best way to pass data in middleware with express

我想让用户详细信息(例如:用户名)出现在我的导航栏中,为此我一直在将 'req.session.user' 变量发送到我的视图。

我一直在做的是,对于每个视图渲染,我发送 req.session 变量,如下所示:

app.get('/index', function(req, res, next) {
    if(req.session.user) {
        res.render("index", {user:req.session.user});
    }
});

然后在我的 backbone 视图中,我的导航栏所在的位置,打印出用户名。

克服这种重复性成就的最佳做法是什么? 我搜索过,但没有结果。

谢谢。

如果您不想像这样将 req.session.user 发送到每个页面:{user:req.session.user} 您可以将此数据添加到 res.locals 对象:

app.use(function(req, res, next) {
    res.locals.user = req.session.user
    next()
})

因此,在每个页面上,您可以像这样输出用户名(以 ejs 为例):

<% if (user) { %>
    <h1>Hello, <%= user.name %></h1>
<% } %>