循环node.js中的回调

时间:2012-12-09 19:04:53

标签: node.js 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);
            });
        }
    })
});

当我在循环中找到所有数据但我不知道如何设置回调 mayme在result.lenth上有条件,但那不是很干净

由于

1 个答案:

答案 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,如果有错误则传递任何错误。