如何从快速4视图调用函数(不是控制器)

时间:2015-03-23 21:43:47

标签: node.js express

例如,我想在页面顶部显示经过身份验证的用户的名称,因此该名称必须位于我的应用的布局视图中。但是我不想在每个控制器函数中将名称作为变量发送,我想避免这种情况:

如果我想访问索引页面:

res.render('index', {user: req.session.username});

如果我想访问其他页面:

res.render('page', {user: req.session.username});

依旧......

所以我想从我的视图中调用一个函数,该函数返回该用户的名称,类似于rails helpers。

这可能吗?

我尝试了res.locals

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

然后当用户通过身份验证时,我使用名称更改res.locals的值,但这只会对下一个呈现的页面工作一次......

1 个答案:

答案 0 :(得分:0)

你把它与res.locals关闭了。只需:

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

在会话中间件之后添加此项,并假设您正确设置了身份验证系统,您应该能够从视图中访问用户名。