2017-10-08 6 views
0

Je veux que les détails de l'utilisateur (ex: nom d'utilisateur) apparaissent dans ma barre de navigation, et pour cela j'ai envoyé la variable 'req.session.user' à mes vues.Meilleur moyen de transmettre des données dans le middleware avec express

Ce que je fais est, pour chaque point de vue de rendre, j'envoie la variable req.session comme ceci:

app.get('/index', function(req, res, next) { 
    if(req.session.user) { 
     res.render("index", {user:req.session.user}); 
    } 
}); 

Et puis, à mon avis fédérateur, où se trouve mon navbar, j'imprimer l'identifiant. Quelles sont les meilleures pratiques pour surmonter cette réussite répétitive? J'ai cherché, mais je n'ai eu aucun résultat.

Merci.

Répondre

2

Si vous ne voulez pas envoyer req.session.user à chaque page comme ceci: {user:req.session.user} vous pouvez ajouter ces données à res.locals objet:

app.use(function(req, res, next) { 
    res.locals.user = req.session.user 
    next() 
}) 

Ainsi, sur chaque page, vous pouvez le nom d'utilisateur de sortie comme celui-ci (par exemple avec ejs):

<% if (user) { %> 
    <h1>Hello, <%= user.name %></h1> 
<% } %>