我有兩個使用Node.js/node-postgres lib/PostgreDB實現RESTful服務的問題,都是由於JS的異步性質。查詢具有自變量和同步查詢的回調
A)我需要傳遞一個額外的參數給回調client.query(查詢,回調)呼叫
我查詢的回調中,並通過最近取出的行從一個數組去一個數據庫,並希望推出後續查詢爲他們每個人:
var query = client.query('SELECT * FROM event', queryAllEventsHandler);
function queryAllEventsHandler(err, result){
allEvents = result.rows;
/* allEvents is an JSON array with the following format
[ {"id_event":1, "name":"name of the event"},
{"id_event":1, "name":"name of the event"}
]
*/
for(var i = 0; i<allEvents.length; i++){
client.query('SELECT * FROM days where id_event = $1',[allEvents[i].id_event], function(err, result){
//I want to have a reference to variable i
}
}
在上面的例子中,我想要做的事,如:
client.query('SELECT * FROM days where id_event = $1',[allEvents[i].id_event], function(AN_EXTRA_ARG, err, result)
其中AN_EXTRA_ARG是一個額外的參數或回調函數中的閉包...我如何實現這一點?我是否應該使用i創建關閉並將其作爲回調的參數傳遞?怎麼樣 ? :|
B)「同步」查詢
我需要推出各種查詢,並從所有這些創建自定義JSON。由於每個查詢和它的回調都是異步的(等待沒有人),我正在尋找一種「馴服」它的方法,除此之外,我首先找到了一個解決方案,但似乎有點「糟糕/糟糕「: 保持查詢計數真的是要走的路@jslatts建議在Synchronous database queries with Node.js?
希望我
感謝您的提示......部分給了我一個想法,使用bind()...謝謝....將肯定看看異步...我不想數數電話:) – luigi7up