我很困惑在這裏發生了什麼。我正在嘗試爲用戶設置res.locals默認配置文件圖片,如果他們目前沒有。這裏是我的代碼:Express.js - 設置res.locals更改req對象
// Make user object available in templates.
app.use(function(req, res, next) {
res.locals.user = req.user;
if (req.user && req.user.profile) {
console.log('Request Picture: ', req.user.profile);
res.locals.user.profile.picture = req.user.profile.picture || defaults.imgs.profile;
console.log('Request Picture After Locals: ', req.user.profile);
}
next();
});
// Console Results
Request Picture: { picture: '',
website: '',
location: '',
gender: '',
name: 'picture' }
Request Picture After Locals: { picture: '/img/profile-placeholder.png',
website: '',
location: '',
gender: '',
name: 'picture' }
我希望能寫JADE無需處理這樣的事情:img(src=user.profile.picture || defaults.profile.picture)
。所以上面的代碼在所有的JADE視圖中都能正常工作。
但是,我需要檢查req.user.profile.picture
其他地方爲了改變圖片。
if (!req.user.profile.picture) {do stuff}
正如你可以看到上面的req
已經改變。設置res.locals
不應該更改req
對象...正確!?或者我錯過了什麼?
感謝您的幫助!
哇哦......我無法相信我錯過了。在這裏,我認爲這是一個快速的事情,當它是一個簡單的JS事情。 JS就是這樣的「陷阱」。 感謝您的幫助!接受答案。 – Beau