Reputation: 4052
I want to make user details (ex: username) appear in my nav bar, and for that I have have been sending the 'req.session.user' variable to my views.
What I've been doing is, for every view render, I send the req.session variable like so:
app.get('/index', function(req, res, next) {
if(req.session.user) {
res.render("index", {user:req.session.user});
}
});
And then in my backbone view, where my navbar is located, I print out the username.
What are the best practices to overcome this repetitive achievement? I've searched, but had no results.
Thank you.
Upvotes: 0
Views: 243
Reputation: 11894
If you do not want to send req.session.user
to each page like this: {user:req.session.user}
you can add this data to res.locals object:
app.use(function(req, res, next) {
res.locals.user = req.session.user
next()
})
Thus, on each page you can output user name like this (example with ejs):
<% if (user) { %>
<h1>Hello, <%= user.name %></h1>
<% } %>
Upvotes: 2