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