내 client.multi 사용하여 나는 장치 목록을 가져 오지하고 각각에 대한 상태 및 라벨을 받아야 다음과 같은 코드가 있습니다node_redis : 대해 forEach
app.get('/test', function(req, res){
db.smembers("devices", function(err1, devices){
var jsonObj = {};
if(!err1) {
var i = 0;
devices.forEach(function(id){
db.multi([
["get", id + ":label"],
["get", id + ":status"],
]).exec(function (err, replies) {
jsonObj[id] = {"label":replies[0], "status":replies[1]};
console.log(jsonObj); // stuff is added on each loop
});
i = i + 1;
if(i == devices.length){
console.log(jsonObj); // jsonObj is {}
h.respond(res, jsonObj);
}
});
} else {
h.respond(res, { "error" : err1 });
}
});
});
장치 ID의 목록입니다. 각각의 id에는 "ID : status", "ID : label"키가 있습니다.
h.respon은 http 응답을 보내는 도우미 메서드입니다.
각 루프에서 jsonObj에 추가되는 새 데이터를 볼 수 있지만 모든 루프가 완료되면 비어 있습니다.
비슷한 문제가있었습니다. 좋은 quesion – Federico