我想查找已登錄的用戶,並將其信息設置爲app.locals
,以便我可以在任何視圖中使用它。如何在Mongoose中使用.findOne的app.locals
我像這樣設置它在我的server.js
文件:
app.use(ensureAuthenticated, function(req, res, next) {
User.findOne({ _id: req.session.passport.user }, (err, user) => {
console.log('user\n', user)
app.locals.logged_in_user = user;
next();
})
});
console.log('user\n', user)
確認該用戶已被發現。 然後,我應該能夠在任何部分,使用該用戶的信息,如在我layout.hbs
文件像這樣:
Currently, {{logged_in_user}} is logged in.
但是,它不工作。回答here建議使用res.locals
來代替,但這並不奏效。這個例子here使用靜態數據,但我需要動態數據,因爲user
將取決於誰在。
記錄現在,我在每一個路線定義user
變量。有沒有一種方法來全局定義一個user
變量,可用於任何部分?
「res.locals」是添加動態信息的正確對象,「app.locals」僅用於靜態(僅設置一次)信息。您的中間件是否在呈現模板的路由之前聲明?在這些路由中,在調用'res.render()'之前,'res.locals.logged_in_user'的值是什麼? – robertklep
我剛剛拿出'ensureAuthenticated',它工作。但是,謝謝你的回覆! – Farid
不過,不要使用'app.locals'。或者,如果你這樣做,期望你在任何時候都只能有一個活躍用戶。 – robertklep