在hbs(handlebars模板)中使用Express的res.locals.someVariable。

7

我正在尝试将我的会话变量传递到我的手柄模板中,但遇到了困难。现在我正在使用以下内容在我的app.configure函数中:

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

它成功地记录到控制台,但是当我尝试在我的Handlebars模板中使用"session"变量时,什么都没有显示出来。这是我的模板的一部分:

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

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

        {{> footerPartial}}
</body>

这是控制台记录的内容:

{ cookie: 
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true },
  userId: 45253262,
  name: 'Austin' }

有什么想法吗?
1个回答

6

我终于找到了解决方法。原来我在调用这个:

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

之后

app.use(app.router);

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

app.use(express.session({
        secret: '***********'
    }));

是的,在 Express 中,您的路由函数是在 app.router 中间件内部执行的。 - furydevoid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接