您需要通过在循环中引入一个函数来使用闭包来存储user_id。一种方法是使用forEach函数在数组上进行迭代。
这是Javascript中的示例:
var redis = require('redis')
var client = redis.createClient();
function fetch( callback ) {
var results = new Array();
client.smembers( "users", function(err,users) {
if ( users.length == 0 )
return callback( results );
users.forEach( function(id) {
client.hgetall(id, function(err,items) {
var obj = {};
obj[id] = items; # here id can be accessed since it is part of the closure
results.push(obj);
if ( results.length == users.length ) {
callback( results );
}
});
});
});
}
fetch( function(results) {
console.log(JSON.stringify(results));
});
输出为:
[ {"user:2":{"name":"user2","password":"secret2"}},
{"user:1":{"name":"user1","password":"secret"}} ]