Jag ser två problem i din kod:
- Du ringer
connection.end()
synkront, men dina frågor körs i ett asynkront flöde. Du måste anropaconnection.end()
först när du är klar med den andra frågan. - Du använder en vanlig
for
loop för att köra asynkrona samtal (du yttre loop).
För att uppnå det du försöker göra, måste du överväga de asynkrona scenarierna. Du kan använda promises
eller en modul som async
, som ger dig många metoder för att hantera assynkrona flöden, som async.each()
:
connection.query(queryString, function(err, rows, fields) {
if (err) throw err;
async.each(rows, function (row, callback) {
console.log('Product Name: ', row.product_name);
var emp_query = 'SELECT * FROM tbl_employer';
connection.query(queryString, function(emp_err, emp_rows, emp_fields) {
if (emp_err) callback(emp_err);
for (var e in emp_rows) {
console.log('Employer Name: ', emp_rows[e].company_name);
}
callback();
});
});
}, function (err) {
connection.end();
}
});
Nu kommer det att garantera att connection.end()
kommer bara att anropas när alla dina frågor är klara.