我正在使用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
然而,當我運行此代碼,我沒有得到正確的輸出。用戶信息不會被推送到main_data。它只是輸出main_data變量,就像代碼的開頭一樣。
它不是簡單的重複建議 因爲函數坐鎮內線一個for循環,所以我不能只是作出反應,一旦調用該函數完成。我必須等到整個循環完成後,纔可以響應呼叫,這可能需要1000多個循環才能完成。
那麼告訴我如何實現它。 我在做什麼錯,如何解決? 非常感謝你
的[我如何返回從一個異步調用的響應?(可能的複製http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an異步調用) – undefined
但問題是函數是在一個循環內,所以我不能在函數內返回數據。我一直等到循環結束。因此,在client.query調用中做出響應並不簡單。 – rksh
您應該簽出nodejs postgres驅動程序文檔。然後你會意識到你有數據的回調函數是異步發生的,因此你的res.json調用發送的信息還沒有機會被更新。 – Paul