Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 返回db.collection.count()中的计数器&x27;s回调不';我不工作,为什么?_Node.js_Node Mongodb Native - Fatal编程技术网

Node.js 返回db.collection.count()中的计数器&x27;s回调不';我不工作,为什么?

Node.js 返回db.collection.count()中的计数器&x27;s回调不';我不工作,为什么?,node.js,node-mongodb-native,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(f

我想跟踪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;
};
它正确地记录了集合的数量,但没有返回正确的值。在我的示例中,它返回null(我如何定义我的
var响应\u计数\u集合;
),如果 尝试
返回集合的编号,如下所示:

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;
        }
    });
};

它返回我“未定义”。有什么方法可以实现我想要的吗?

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

如果您希望它是异步的,那么您必须学会使用一些节点模块(如async)来控制程序流

更新:
看看这个问题,它展示了如何正确地使用回调从异步函数返回值。

您的问题是,您将同步和异步编程不当地结合在一起。当函数到达返回点时,
dm.messages.count
可能还没有执行。但是如果我尝试像这样返回计数器,结果是一样的:(使用OP中的代码编辑)。在异步编程中不使用
return
。您应该改为使用回调。可能与的重复,但即使我尝试在回调中返回值,它也会记录该值并返回未定义的值。您从回调返回值的方式不正确。看看这个问题,它展示了如何使用回调从异步函数返回值。