在循环node.js中callback

我不明白如何在循环中设置callback:

models.chat_user.find( {user_id: app.locals.session.user._id}, function(err, result){ if(result.length < 1){ chat.user = new models.chat_user({ user_id: app.locals.session.user._id }) chat.user.save(); } models.chat_user.find(function(err, result){ for(value in result){ models.user.findOne({_id: result[value].user_id}, function(err, user){ chat.users[value] = {}; chat.users[value].username = user.username chat.users[value].mail = app.locals.user.getAvatar(user.mail, 50); }); } }) }); 

当我在循环中find所有数据时,我想设置一个callback函数,但是我不知道如何使用result.lenth的条件,但这不是很干净

谢谢

像这样使用async.forEach

 models.chat_user.find(function(err, result){ async.forEach(result, function(value, callback) { models.user.findOne({_id: result[value].user_id}, function(err, user){ chat.users[value] = {}; chat.users[value].username = user.username chat.users[value].mail = app.locals.user.getAvatar(user.mail, 50); callback(err); }); }, topLevelCallback); }); 

当所有的forEach迭代都调用它们的callback函数时,会调用topLevelCallback ,如果有错误则传递任何错误。