使用 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>
<% } %>
我想让用户详细信息(例如:用户名)出现在我的导航栏中,为此我一直在将 '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>
<% } %>