まず、これは私にとって未知の領域であることをお許しください...
以下を得ました:
app.get('/user/:user_id/followings', function(req, res) {
var response = {}
, userId = req.params.user_id
, ids = req.param('id').split(',')
, prefix = 'user'
, suffix = 'follower_ids';
for (var i=0; i<ids.length; i++) {
var id = ids[i]
, key = prefix+':'+ids[i];
console.log('1: ' + key);
checkMembership(userId, id, key, suffix, function(error, reply){
response[key] = reply;
console.log('2: ' + key + ': ' + reply);
});
}
res.json(response);
});
function checkMembership(userId, id, key, suffix, callback) {
var lookup = key+':'+suffix;
client.sismember(lookup, userId, callback);
}
次のパスの場合: /user/1/followings?id=1,2,3,4,1000
コンソールでこれを取得します:
1: user:1
1: user:2
1: user:3
1: user:4
1: user:1000
2: user:1000: 0
2: user:1000: 1
2: user:1000: 1
2: user:1000: 1
2: user:1000: 0
そしてこれはブラウザで: {}
何かが非同期で発生しているため、それが発生していると思います...修正方法がわかりません。
checkMembership 関数に記録されたキーが間違っています。コンソールは、次のように 2 番目のコールバックを出力する必要があります。
2: user:1: 0
2: user:2: 1
2: user:3: 1
2: user:4: 1
2: user:1000: 0
ヘルプ!