node.js (express) アプリケーションがあり、node_redis を使用して redis db からすべてのユーザーを取得しています。
redis = require "redis"
client = redis.createClient()
client.smembers "users", (err, user_ids) ->
results = new Array()
for user_id in user_ids
client.hgetall user_id, (err, items) ->
results.push items
if user_ids.length is results.length
res.json results
これにより、次の結果が生成されます。
[
{
"name": "user1",
"password": "secret"
},
{
"name": "user2",
"password": "secret"
}
]
ここで、user_id をユーザー結果に追加したいので、次の出力を取得できます。
[
{
"user:1": {
"name": "user1",
"password": "secret"
}
},
{
"user:2": {
"name": "user2",
"password": "secret"
}
}
]
私が抱えている問題は、client.hgetall()が非同期的に呼び出され、 for ループで user_id に単純にアクセスできないことです。