1
我有一個app.get會返回客戶數據和客戶購買。在這個app.get內部,我需要運行兩個mysql調用並構建一個數組來傳回。如何執行一個接一個的查詢並處理該數據?
如何執行一個接一個的查詢並處理該數據?
app.get('/customer', function (req,res) {
var response1 = [];
var response2 = [];
var processedData = [];
connection.query('QUERY HERE', function(err, rows, fields) {
if (!err){
response.push({rows});
} else {
res.status(400).send(err);
}
});
//for loop 'response' results and perform another query
for (var i = 0; i < response1.length; i++) {
var row = response1[i];
connection.query('QUERY HERE FOR row.customerid', function(err, rows, fields) {
if (!err){
processedData.push({'Customer Name:' : row.customername, 'purchases' : rows});
} else {
res.status(400).send(err);
}
});
}
//Send json back
res.setHeader('Content-Type', 'application/json');
res.status(200).send(JSON.stringify(processedData));
});
添加您的循環和第二查詢,如果塊中。順便說一句,在JS中,我們通常會使用if(err){return res.status(400.send(err)},那麼在該塊之後的任何代碼都會在沒有錯誤時執行,並且不需要在塊內部。 ,如果你這樣做,你的循環和第二個查詢會在if塊之後出現 – Nocturno
Hi @Nocturno,添加了我的第二個查詢以及for循環,語法可能不是100%,但是隻是想勾勒出我正在努力完成的任務 – user964627
是的,我看到了你正在努力完成的任務,並且我想在別人試圖說服你使用複雜的異步庫之前向你展示標準的異步方式。你必須在第一個回調中添加你的循環和第二個查詢,這個回調只有在異步函數返回後纔會執行,這就是異步行爲的工作原理,我將重寫你的代碼並將其添加爲答案。 – Nocturno