2017-04-18 76 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('/'); 
} 
相关问题