Mongodb findOne没有结果/抛出TypeError

我对Node / js / mongo非常陌生,所以如果我完全错误的话,请耐心等待。

我有一个本地的db.js文件,使用callback给我一个Mongodb集合对象上下文。 该对象是有效的,并从我的callback调用find()返回一个游标到预期的var游标。 但是,下面的调用findOne对于err和res都返回null。

如果我以类似的方式调用findOne来查找,Node会抛出一个TypeError,抱怨我没有传入一个callback函数findOne。

db.openDB( function(err, db) { if(err) { console.log(err); } else { var cursor = db.find(); console.log(cursor); db.findOne({}, function(err, res) { console.log(res); }); } }); 

编辑: @JohnnyHK db.js我现在注意到,我打开收集队列两次,但我仍然输了,所以看看。

尝试调用cursor.each()并查看游标是否真的存在。 然后尝试注释conn.close(); 在你的openDB函数中。 我想在你收到你的数据之前,你正在closures连接。

也试试

 db = new mongodb.Db('test', server, {w:1}), 

而不是“队列”,如果你正在使用默认的数据库。

我相信这个问题的答案应该可以帮助你: https: FindOne()不会像Find()那样返回游标。 例如,如果您有一个空的集合并使用Find()您将得到0的计数。如果您对使用FindOne()的空集合进行了相同的尝试,则会得到一个空错误。