James
James

Reputation: 4052

Best way to pass data in middleware with express

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

Answers (1)

Michael
Michael

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

Related Questions