【问题标题】:Using session variables in jade template in node js在节点js的jade模板中使用会话变量
【发布时间】:2012-09-28 13:03:40
【问题描述】:

除了使用动态辅助函数并通过 res.render 传递之外,是否有任何替代方法可以在 Jade 模板文件中使用会话变量? 如果我使用 dynamichelpers 方法,它会显示错误,因为它已被弃用。请帮忙

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

我在 app.configure 函数中的 app.js 中使用了这段代码。但我仍然无法在我的视图中使用变量用户。我需要安装任何其他软件包或任何其他代码吗?

【问题讨论】:

  • 这有帮助吗? stackoverflow.com/q/11580796
  • 是的,谢谢,但仍然无法访问该变量。
  • app.use(app.router)之前的自定义中间件是否包含在内?如果在app.router 之后,您需要颠倒它们的顺序。
  • 是的,那是我犯的错误。非常感谢乔纳森 lonowski

标签: node.js pug express


【解决方案1】:

这段代码应该可以工作。例如,我在我的一个生产系统中使用几乎相同的代码:

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

您需要确保此代码在您设置 req.locals.user 之后 - 例如,如果您使用 Passport,则在您执行初始化和会话代码之后,但 在您实际处理和呈现请求之前

【讨论】:

  • 在这种情况下 next() 的目的是什么?我知道它对用户身份验证功能很有用,但如果你只是设置 app.locals,我们需要 next() 吗?我删除了 next() ,没有它它仍然可以正常工作。
  • next() 调用没有错误,表明该中间件已完成,但还需要执行进一步的中间件。如果你不调用 next(),我认为不会执行任何进一步的中间件。
  • 我认为如果你想将某些东西传递给下一个中间件,你只需要 next 。 'Use' 在要调用的链中添加下一个函数。接下来给它一个参数。
猜你喜欢
  • 2016-02-09
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
  • 2011-11-14
  • 1970-01-01
  • 2020-12-20
相关资源
最近更新 更多