2013-12-12 46 views
0

我通过tutorial我在网上找到了Node.js和受蒙戈DB提供下面的代码运行:无法从蒙戈DB在结滤芯DB结果

collection.find({},{},function(e,docs){ 
     res.render('userlist', { 
      "userlist" : docs 
     }); 
    }); 

有关所有搜索一个蒙戈DB数据库用户。代码工作正常,但是当我试图将其修改为

collection.find({'username': "testuser1"},{},function(e,docs){ 
     res.render('userlist', { 
      "userlist" : docs 
     }); 
    }); 

为了获得一个特定用户,我仍然获得所有结果。

如果我将相同的collection.find()命令输入到mongo控制台中,它将按照预期返回单个结果。

发生了什么事?

回答

1

用户名需要用引号括起来。

collection.find({'username':'testuser1'},{},function(e,docs){ 
    res.render('userlist', { 
     "userlist" : docs 
    }); 
}); 

...应该工作。

我相信原因是因为MongoDB使用BSON,它需要引号,而JSON没有,但我可能会误解。

+0

不,那不可能。这些在JavaScript中是相同的。 – JohnnyHK

+0

@JohnnyHK - 但BSON不是JavaScript。 MongoDB语法要求引用关键字名称和定义。 该代码适用于引号。没有它们,它不会。我编写了原始文章中引用的教程,因此我能够快速调出代码,进行编辑并检查自己。 –

+0

此外,原始帖子已被编辑。以前没有引号用户名,但现在有。 –

0

我用我的index.js

/* GET Userlist page. */ 
    router.get('/userlist1', function(req, res) { 
    var db = req.db; 
    var collection = db.get('questions1'); 
    collection.find({},{},function(e,docs){ 
     res.render('userlist1', { 
      "userlist" : docs 
     }); 
    }); 
    }); 

我从我收集的所有值相同教程克里斯S.

有了这个代码。这很好,但如何从同一个集合中获取单个文档?或者甚至更好,如何随机获取单个文档?所以如果你多次查询它,返回值每次都会改变。

顺便说一句,该教程是非常完美的从头开始创建一些东西,并有点了解应用程序和数据库连接如何工作。