NodeJS postgresqlクライアントを使用してデータループをフェッチして出力します。私はExpressJSをpostgresqlクライアントと一緒に使用しています。NodeJs関数の変数にアクセスすることができません
これは私がこのコードを実行するときしかし、私は適切な出力を得ることはありません私のコード
var main_data = some array of data
var user_info = {}
for (var key in result.rows) {
var user = main_data[key].user
client.query('SELECT name,age,address FROM users WHERE user_id = $1 LIMIT 1;' , [user], function(queryErr, result){
var return_data = result.rows[0]
user_info.name = return_data.name
user_info.gender = return_data.gender
user_info.address = return_data.address
main_data[key].user_info = user_info
})
}
done()
res.json(main_data)
return
です。 userinfoはmain_dataにプッシュされません。 main_data変数はコードの始めと同じように出力されます。関数は、関数が実行されたら、私はちょうど、応答電話をかけることができないforループ内で座っているので 重複提案されているよう
は、それは簡単ではありません。私はループ全体が終了するまで待つ必要があります。ループが終了するまでに1000回以上かかることがあります。
私はそれを達成する方法を教えてください。 私は間違って何をしていますか、どうやって解決できますか? ありがとうございました
可能な重複http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an -asynchronous-call) – undefined
しかし、問題は関数がループ内にあり、関数内のデータを返すことができないということです。ループが終わるまで私は待っている。したがって、client.query呼び出しの中で応答を作成するのは簡単ではありません。 – rksh
nodejs postgresドライバのドキュメントをチェックアウトする必要があります。データがあるコールバック関数が非同期的に発生するため、res.jsonコールはまだ更新されていない情報を送信しています。 – Paul