在hbs中表达res.locals.someVariable(车把模板)

ano*_*fox 6 node.js express handlebars.js

我试图将我的会话变量传递给我的把手模板,但我遇到了困难.现在我在app.configure函数中使用它:

app.use(function(req, res, next){
        res.locals.session = req.session;
        console.log(res.locals.session);
        next();
});
Run Code Online (Sandbox Code Playgroud)

它正确记录到控制台,但是当我尝试在我的把手模板中使用"session"变量时,没有任何显示.这是我的模板的一部分:

<body>
        <nav>
            {{> topBarPartial}}

            {{> secondaryBarPartial}}
        </nav>
        <div>
            <p>before</p>
            {{session}}
            <p>after</p>
            {{> mainPartial}}
        </div>

        {{> footerPartial}}
</body>
Run Code Online (Sandbox Code Playgroud)

以下是控制台记录的内容:

{ cookie: 
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true },
  userId: 45253262,
  name: 'Austin' }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ano*_*fox 6

我终于找到了我的解决方案。原来我是这么称呼的:

app.use(function(req, res, next){
        res.locals.session = req.session;
        console.log(res.locals.session);
        next();
});
Run Code Online (Sandbox Code Playgroud)

app.use(app.router);
Run Code Online (Sandbox Code Playgroud)

它实际上需要在 app.router 之前,但在之后

app.use(express.session({
        secret: '***********'
    }));
Run Code Online (Sandbox Code Playgroud)