db.collection.count()回调中的返回计数器不起作用,为什么?

时间:2014-08-11 04:24:01

标签: node.js node-mongodb-native

我想跟踪node.js服务器中集合中的文档数量 使用mongodb驱动程序。我可以插入,删除和更新,但是当我尝试计数时,它会起作用,直到我尝试存储该值,它什么都不返回。

这是我的代码:

var db_collection = db.collection('collection');

var countCollections = function () {

    var response_count_collections = null;
    db_mensajes.count(function(err,number_of_collections){
        if (err){
            console.log(err);
        } else {
            response_of_collections = number_of_collections;
            console.log('Number of collections: '+number_of_collections);
        }
    });
    return response_count_collections;
};

它正确记录了number_of_collections,但它没有返回正确的值。在我的例子中,它返回null(我如何定义我的var response_count_collections;)以及我是否 尝试在db_collections.count()的回调中return number_of_collections;,如下所示:

var db_collection = db.collection('collection');

var countCollections = function () {

    var response_count_collections = null;
    db_mensajes.count(function(err,number_of_collections){
        if (err){
            console.log(err);
        } else {
            console.log('Number of collections: '+number_of_collections);
            return number_of_collections;
        }
    });
};

它返回我" undefined"。有没有办法达到我想要的目的?

1 个答案:

答案 0 :(得分:1)

因为它在函数完全执行之前返回变量。

如果您希望它是异步的,那么您将不得不学习使用某些节点模块来控制程序的流程,例如 async

更新

查看this问题,它显示了如何使用回调正确地从异步函数返回值。