当查询找不到用户时,为啥页面没有重定向?

Posted

技术标签:

【中文标题】当查询找不到用户时,为啥页面没有重定向?【英文标题】:Why page ain't redirecting, when query can't find user?当查询找不到用户时,为什么页面没有重定向? 【发布时间】:2017-09-14 15:19:41 【问题描述】:

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

            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
                    )
                
            );

【问题讨论】:

【参考方案1】:

只有在请求有错误时才会重定向。如果您没有错误并且没有用户,则不会发生任何事情。如果 findOne 没有找到匹配项,它将返回一个空文档,而不是错误。

尝试将第一个 if 语句更改为:

 if(err || !user) 
   res.redirect('/');
 

【讨论】:

【参考方案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
                )
            
        );

【讨论】:

以上是关于当查询找不到用户时,为啥页面没有重定向?的主要内容,如果未能解决你的问题,请参考以下文章

Django在重定向时找不到模式名称

找不到子域时如何使网站重定向到页面[重复]

如果用户点击停留在页面上,则重定向的 Javascript 警报

当应用程序在本地运行时如何修复 PHP 上的重定向错误

找不到页面上的 Vue-router 重定向 (404)

找不到静态文件路径页面重定向到另一个页面