我不明白如何在循环中设置回调:
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);
});
}
})
});
当我在循环中找到所有数据但我不知道如何设置回调 mayme在result.lenth上有条件,但那不是很干净
由于
答案 0 :(得分:3)
像这样使用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);
});
所有topLevelCallback
次迭代调用forEach
时调用 callback
,如果有错误则传递任何错误。