2014-11-27 3 views
0

Red는 redis와 함께 노드에 async 모델을 사용합니다.NodeJS 비동기 모듈 + redis

내 코드 :

async.each(data, function(n, done) { 
     redisClient.LLEN("user:" + n + ":active", function(err, numbActive) { 
      if(!err) { 
       console.log("[CHECKING].... " + n + " NUMB::::: " + numbActive); 
       globalNumbActive += numbActive; 
       done(globalNumbActive); 
      } else { 
       done(err, 0); 
      } 
     });    
}, function(err, globalNumbActive) { 
    console.log("GLOBALS --> " + globalNumbActive); 
    return callback(globalNumbActive); 
}); 

데이터가 위의 포함

['231', '323', '323'] 

내가 그런 다음 user:user_id:active 목록에있는 사용자 아이디의 각을 확인을 요약하고 반환합니다.

지금 바로 위의 내용을 먼저 확인한 다음 반환합니다.

내가 잘못하고있는 아이디어가 있습니까?

+0

시작은 콜백에서 ERR을 기록하는 것입니다 – Ralph

답변

0

주 콜백의 두 번째 인수가 제거되면 어떻게됩니까? 다음 스 니펫은 나를 위해 작동합니다.

// Assume the two lists have been created in the way below. 
// redisClient.lpush('user:231:active', 'John', 'Adam'); 
// redisClient.lpush('user:323:active', 'Sam'); 

var data = ['231', '323', '323']; 
var globalNumActive = 0; 
async.each(data, function(n, callback) { 
    redisClient.llen('user:' + n + ':active', function(err, numActive) { 
     if (!err) { 
      globalNumActive += numActive; 
      console.log('user id: ' + n + '\tactive #: ' + numActive + '\ttotal active #: ' + globalNumActive); 
      callback(null); 
     } else { 
      callback(err); 
     } 
    }); 
}, function(err) { 
    console.log('total active #: ' + globalNumActive); 
}); 

출력은

user id: 231 active #: 2 total active #: 2 
user id: 323 active #: 1 total active #: 3 
user id: 323 active #: 1 total active #: 4 
total active #: 4