我是全新堆棧web開發新手。現在我遇到了一個問題。我正在使用mongodb,貓鼬,節點和快車。如何從一個控制器訪問相同的帖子?
我有兩個控制器,一個是註冊,另一個是配置文件。爲註冊
代碼會是這樣
router.post('/',(req,res,next)=>{
let user = new userProfile();
user.email = req.body.email;
user.name = req.body.firstName;
user.save((err)=>{
if(err){
return err;
}
})
res.redirect('/profile');
});
點擊提交後,我能找到集合中的用戶條目。現在我在配置文件控制器。
的配置文件中的代碼:
router.get('/',(req,res)=>{
console.log(req.body.email);
userProfile.find({email: 'yyyy'},(err,user)=>{
if(err) return err;
})
res.render('profile/profile');
})
當我這樣做的console.log,其輸出未定義。預期的輸出應該是註冊頁面的電子郵件地址,這樣當我找到功能時,我將會得到具有相同電子郵件地址的正確條目,並在網頁上顯示相應的用戶名。
我的問題是配置文件控制器如何從註冊控制器訪問相同的帖子信息。
的'req'對象僅作用範圍是「當前請求「,這意味着如果您實際上沒有發送任何請求的」主體「中的任何內容,那麼就沒有任何內容。無論如何,您實際上不會在GET請求中使用「body」。相反,您要麼發送數據在url中,並在請求中匹配爲'router.get('/:email',(req,res)=> {userProfile.findOne({「email」:req.params.email} ...'或者你實際上會使用「會話」並通過它來檢索當前的已認證用戶。也許看[護照](http://passportjs.org/docs)作爲集成身份驗證的一種方式。 –
聽起來您需要在服務器上進行用戶會話,因此一旦用戶在第一次請求中登錄後,第二次請求進入時,您就可以知道它是哪個用戶。 http服務器基本上是無狀態的,因此您不會直接從另一個請求中的一個請求中訪問數據,因爲當第二個請求到達時,第一個請求早已消失。相反,您可以cookie用戶,然後可以使用實現會話對象的代碼來存儲特定用戶的半持久性數據,這些數據可以在將來的請求中訪問。參見[express-session](https://www.npmjs.com/package/express-session)。 – jfriend00