MongoJS同步调用

我正在修复一个项目中的一些错误。 我需要同步光标,加载循环中的数据。 我有代码:

var mongo = require('mongojs'), dataMaps = []; mongo.penguin_friends.find({ user_id_1: id_user }, function(err, friends) { friends.forEach(function(data) { var cursor = mongo.penguin_user_maps3.find({ user_id: data.id_user }, { fields: { maps: 1 } }); //I need to do dataMaps.push(cursor.data); }); console.log("processingThisSomething()"); processSomething(); }); 

我需要在调用processSomething()之前完成这个请求。 所以我需要在一个循环内同步处理mongodb查询。

由于API不支持,所以不可能使查询同步。

您必须提供一个callback.find()或一个cursor方法来接收结果:

 cursor.toArray(function (err, maps) { if (!err) { dataMaps.push(maps); } }); 

但是,您可以将迭代器replace为asynchronous感知的迭代器,例如async.each() ,以便在完成时继续:

 async.each( friends, function (data, callback) { var cursor = mongo....; cursor.toArray(function (err, maps) { if (!err) { dataMaps.push(maps); } callback(err); }); }, function (err) { if (!err) { processSomething(); } } );