Node.js 返回db.collection.count()中的计数器&x27;s回调不';我不工作,为什么?
我想跟踪node.js服务器中集合中的文档数量 使用mongodb驱动程序。我可以适当地插入、删除和更新,但当我尝试计数时,它会一直工作,直到我尝试存储该值时,它才返回任何值 这是我的密码: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
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
。您应该改为使用回调。可能与的重复,但即使我尝试在回调中返回值,它也会记录该值并返回未定义的值。您从回调返回值的方式不正确。看看这个问题,它展示了如何使用回调从异步函数返回值。