从MongoDB迭代Cursor

时间:2013-11-06 10:01:51

标签: javascript node.js mongodb

我正在尝试获取集合中的所有文档,因此我可以基于它们做一些事情。

我使用以下代码:

var test = pool.getDbCollection('Events');
test.find()   //get them all
    .each(function (error, doc) {
        if (error) {
            throw error;
        } else {
                    //I am not getting here
                    //I am getting TypeError: Object 5 has no method 'each'
                    //And there are 5 Documents in the collection
        }
    });
}

并且继续得到:对象5没有'每个'的方法

此功能可以正常工作(相同的连接属性):

 exports.getEventData = function (data) {
    var deferred = Q.defer();
    var eventCollection = pool.getDbCollection('Events');//TO DO Move this to config file
    eventCollection.findOne({"id":data},
        function (err, docs) {
            if (!err) {
                deferred.resolve(docs);
                console.log('INFO(getEvents Method): Got the data !!!!')

            } else {
                deferred.reject('INFO(getEvents Method): Failed to get the data');
            }
        }
    );

    return deferred.promise;
};

看起来在最后一个对象上尝试了每个函数,但最后一个对象不存在。至少它看起来像那样。但我可能完全错了。

1 个答案:

答案 0 :(得分:1)

doc将在循环的最后一次迭代中为null,作为循环已完成的信号。