小编Mar*_*ado的帖子

Node.js + MongoDB查询与"$或"对象无法正常工作

我正在尝试为用户创建一条路线,以便能够检查其他用户的个人资料.但是,我希望通过2个不同的网址加入这些配置文件/profile/nickname,/profile/id以便可以使用用户的昵称或用户ID来接收配置文件.我尝试了以下代码:

app.get("/profile/:id", function(req, res) {

User.findOne( { $or : [{ "nickname": req.params.id },{ "_id": req.params.id }] }, function(err, user) {
    if(user)
    {
        res.render('users/profile.jade', {
        locals: { 
            currentUser: user, 
            title: user.nickname +"'s Profile",
            jsf:[],
        }
        });
    }
    else
    {
        res.render('404.jade', { 
            status: 404,
            title: 'Page Not Found', 
                jsf: []  
        });
    }
});
});
Run Code Online (Sandbox Code Playgroud)

问题是,它似乎只是使用id而不是昵称,这意味着/profile/4f4ae474546708b219000005如果我访问的东西工作,但如果我访问/profile/mmellad哪个是该用户的给定昵称,我得到404页面.

还有一件事我觉得它对昵称很好用,它改变了查询

User.findOne( { $or : [{ "nickname": req.params.id },{ "_id": req.params.id }] }
Run Code Online (Sandbox Code Playgroud)

User.findOne( { "nickname": req.params.id } …
Run Code Online (Sandbox Code Playgroud)

routes mongodb node.js express

5
推荐指数
1
解决办法
4296
查看次数

标签 统计

express ×1

mongodb ×1

node.js ×1

routes ×1