Mongodb findOne没有结果/抛出TypeError

时间:2014-06-26 14:11:38

标签: javascript node.js mongodb

我是Node / js / mongo的新手,如果我完全错了,请耐心等待。

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

如果我以类似的方式调用findOne,那么节点会抛出一个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);
        });
    }
});

为@JohnnyHK编辑:db.js 我现在注意到我打开了两次收集队列,但我还是迷路了,所以看看吧。

2 个答案:

答案 0 :(得分:3)

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

也可以尝试

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

而不是排队'如果您使用的是默认数据库。

答案 1 :(得分:1)

我相信这个问题的答案可以帮到你:https://stackoverflow.com/a/24129547/3993375 FindOne()不会返回Find()之类的光标。 例如,如果您有一个空集合并使用Find(),则计数为0。 如果您使用FindOne()对空集合尝试相同操作,则会出现空错误。