2017-05-11 68 views
2

我有這個代碼工作,但非常依賴於查詢參數。每個查詢都基於請求參數。如何通過sql數組來承諾

var query1P = connection.execute("SELECT * FROM C"); 

var query3P = connection.execute("SELECT * FROM A"); 

Promise.all([query1P query3P]).spread(function (result, result3) { 
res.status(200).json({ table: result.rows, table3: result3.rows }); 
return connection.close(); 
}) 
.catch(function (err) { 
console.log(err.message); 
return connection.close(); 
}); 

如何傳遞查詢數組中Promise.all像

queryArray = [query1P,query2P,query3P]

,並獲得滿意的結果回到陣。有什麼可以通過queryArray循環的承諾?

感謝

+0

不要傳遞數組字面值,不要使用'spread'而不是'then'? – Bergi

回答

0

雖然我注意到有query1P和query3P之間沒有逗號你Promise.all()電話這應該自動發生(此外,.spread()應替換爲.then()

Promise.all(['test', 'blah']) 
 
    .then(function(responses) { 
 
     console.log(responses); 
 
    })

只需將'test'和'blah'替換爲最終解決的實際承諾即可。

+0

我可以這樣做嗎?'Promise.all([array]) .then(function(responses){console.log(responses); })' – user557657

+0

準確地說。傳遞給.then()函數的第一個參數是傳遞給.all()方法的請求響應的數組。 –