为什么当请求找不到用户时,他会挂起,而不是重定向到主页面?如何解决这个问题?
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
})
}
});
答案 0 :(得分: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 :(得分:1)
只有在请求出错时才会重定向。如果您没有错误并且没有用户,则不会发生任何事情。如果findOne找不到匹配项,它将返回一个空文档,而不是错误。
尝试将第一个if语句更改为:
if(err || !user) {
res.redirect('/');
}