Javascript Mongodb findOne没有结果/抛出类型错误

Javascript Mongodb findOne没有结果/抛出类型错误,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我是Node/js/mongo的新手,所以如果我完全错了,请容忍我 我有一个本地db.js文件,它使用回调为我提供Mongodb集合对象的上下文。 该对象是有效的,从我的回调调用find()会按预期将游标返回到var游标。但是,以下对findOne的调用对于err和res都返回null 若我以类似于find的方式调用findOne,node会抛出一个TypeError,抱怨我并没有将回调传递给findOne db.openDB( function(err, db) { if(err)

我是Node/js/mongo的新手,所以如果我完全错了,请容忍我

我有一个本地db.js文件,它使用回调为我提供Mongodb集合对象的上下文。 该对象是有效的,从我的回调调用find()会按预期将游标返回到var游标。但是,以下对findOne的调用对于err和res都返回null

若我以类似于find的方式调用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);
        });
    }
});
编辑:为@johnyhk
我注意到现在我已经打开了两次收集队列,但是我仍然迷路了,所以请看一看

尝试调用
cursor.each()
并查看光标中是否有实际内容。然后尝试注释出
conn.close()在openDB函数中。我认为您在获取数据之前正在关闭连接

也尝试

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

如果您使用的是默认数据库,请不要使用“队列”。

尝试调用
游标。each()
并查看游标中是否有实际内容。然后尝试注释出
conn.close()在openDB函数中。我认为您在获取数据之前正在关闭连接

也尝试

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

如果您使用的是默认数据库,请不要使用“队列”。

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

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

您似乎在对数据库对象而不是集合调用
FindOne
。不,它肯定是集合对象。我的db.open to conn.collection('schema',callback)中有一个回调,然后将其内容返回到我传入的原始回调中。好的,您可以编辑问题以显示
db
的代码吗?如果调用cursor.each(),光标中实际上有什么东西吗?您的数据库称为队列,您的集合也称为队列?您似乎在对数据库对象而不是集合调用
findOne
。不,它肯定是集合对象。我的db.open to conn.collection('schema',callback)中有一个回调,然后将其内容返回到我传入的原始回调中。好的,您可以编辑问题以显示
db
的代码吗?如果调用cursor.each(),光标中确实有什么东西吗?您的数据库称为queue,您的集合也称为queue?