我是 Node/js/mongo 的新手,所以如果我完全错了,请多多包涵。
我有一个本地 db.js 文件,它使用回调为我提供有关 Mongodb 集合对象的上下文。 该对象有效,并且从我的回调中调用 find() 会按预期将游标返回到 var 游标。但是,以下对 findOne 的调用会为 err 和 res 返回 null。
如果我以类似的方式调用 findOne 来查找,node 会抛出一个 TypeError,提示我没有将回调传递给 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);
});
}
});
编辑:db.js对于@JohnnyHK 我现在注意到我打开了两次收集队列,但我仍然迷路了,所以看看。
最佳答案
尝试调用 cursor.each()
并查看光标中是否真的有东西。然后尝试在您的 openDB 函数中注释掉 conn.close();
。我认为您在获取数据之前关闭了连接。
也试试
db = new mongodb.Db('test', server, {w:1}),
如果您使用的是默认数据库,而不是“队列”。
关于javascript - Mongodb findOne 没有结果/抛出 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24432830/