2017-10-08 117 views
0

我想讓用戶的詳細信息(例如用戶名)出現在我的導航欄中,並且爲此我一直髮送'req.session.user'變量到我的視圖。用快遞傳遞中間件數據的最佳方法

我一直在做的是,對每個視圖渲染,我送req.session變量,像這樣:

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

然後在我的骨幹觀點,在我的導航欄的位置,我打印出來用戶名。

克服這個重複成就的最佳實踐是什麼? 我搜索了,但沒有結果。

謝謝。

回答

2

如果你不想送req.session.user像這樣每一頁:{user:req.session.user}您可以將此數據添加到res.locals對象:因此

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

,每一頁上可以輸出用戶名這樣的(例如用ejs):

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