当查询无法找到用户时,为什么页面没有重定向?

时间:2017-04-18 16:55:45

标签: javascript node.js mongodb mongoose schema

为什么当请求找不到用户时,他会挂起,而不是重定向到主页面?如何解决这个问题?

            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 个答案:

答案 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('/');
 }