I am trying to pass my session variables to my handlebars templates but am getting stuck. Right now I am using this in my app.configure function:
app.use(function(req, res, next){
res.locals.session = req.session;
console.log(res.locals.session);
next();
});
It logs correctly to the console, but when I try to use the "session" variable in my handlebars template, nothing shows up. Here is part of my template:
<body>
<nav>
{{> topBarPartial}}
{{> secondaryBarPartial}}
</nav>
<div>
<p>before</p>
{{session}}
<p>after</p>
{{> mainPartial}}
</div>
{{> footerPartial}}
</body>
Here is what is being logged by the console:
{ cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true },
userId: 45253262,
name: 'Austin' }
Any ideas?
Fast execution. Handlebars compiles templates into JavaScript functions. This makes the template execution faster than most other template engines.
Handlebars is a simple templating language. It uses a template and an input object to generate HTML or other text formats. Handlebars templates look like regular text with embedded Handlebars expressions.
Getting started Next, install the Handlebars npm package, which contains the precompiler. Create a file name example. handlebars containing your template: Handlebars <b>{{doesWhat}}</b> precompiled!
I finally found my solution. It turns out that I was calling this:
app.use(function(req, res, next){
res.locals.session = req.session;
console.log(res.locals.session);
next();
});
after
app.use(app.router);
It actually needs to be before the app.router, but after
app.use(express.session({
secret: '***********'
}));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With