2017-04-18 66 views
0

爲什麼當請求沒有找到用戶時,他掛起了,而不是重定向到主頁面?這怎麼解決?當查詢無法找到用戶時,爲什麼頁面不重定向?

  User.findOne({_id: userid}, function(err, user) { 
       if(err) { 
        res.redirect('/'); 
       } 
       if (user) { 
        res.render('user',{ 
         title: user.nickname, 
         id: user._id, 
         nickname: user.nickname, 
         email: user.email, 
         name: user.name, 
         surname: user.surname, 
         age: user.age, 
         country: user.country, 
         city: user.city, 
         phoneNumber: user.phoneNumber, 
         myId: req.user._id 
        }) 
       } 
      }); 

回答

2

因爲沒有找到任何事情比具有誤差不同,請嘗試以下操作:

User.findOne({_id: userid}, function(err, user) { 
      if(err || !user) { 
       res.redirect('/'); 
      } 
      else { 
       res.render('user',{ 
        title: user.nickname, 
        id: user._id, 
        nickname: user.nickname, 
        email: user.email, 
        name: user.name, 
        surname: user.surname, 
        age: user.age, 
        country: user.country, 
        city: user.city, 
        phoneNumber: user.phoneNumber, 
        myId: req.user._id 
       }) 
      } 
     }); 
+1

爲您輕鬆點。謝謝! –

+0

不客氣:) –

1

你只有在請求有錯誤重定向。如果您沒有錯誤,並且沒有用戶,則不會發生任何事情。如果findOne找不到匹配項,它將返回一個空文檔,而不是錯誤。

嘗試改變第一if語句:

if(err || !user) { 
    res.redirect('/'); 
} 
相關問題