如何处理与MongoDB和node.js的asynchronous?

在这个代码片段中更新MongoDB数据库之前确保for循环完成其处理的最好方法是:

var userIdArray = [] // contains 100000 userIds User.find({'_id': {$in: userIdArray}}, 'name', function(err, result){ var thisTime = new Date().getTime(); var usersArray = []; for (var i = 0; i < result.length; i++) { var user = result[i]; var userObject = { userId: user['_id'], userName: user.name, time: thisTime } usersArray.push(userObject); }; Model.update(id, {$pullAll: {userIds: userIdArray}, $push: {users: {$each: usersArray}}}, function(err, result) { //continue to do stuff } ); }); 

您的for循环具有所有顺序和同步操作。 它会在你的mongo更新被触发之前总是完成。