Ich sehe zwei Probleme in Ihrem Code:
- Sie rufen
connection.end()
auf synchron, aber Ihre Abfragen werden asynchron ausgeführt. Sie müssenconnection.end()
aufrufen erst wenn Sie die zweite Abfrage beendet haben. - Sie verwenden einen normalen
for
loop, um asynchrone Aufrufe auszuführen (Sie outter loop).
Um das zu erreichen, was Sie versuchen, müssen Sie diese asynchronen Szenarien berücksichtigen. Sie könnten promises
verwenden
oder ein Modul wie async
, das Ihnen viele Methoden zur Verfügung stellt, um mit asynchronen Flüssen umzugehen, wie 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();
}
});
Jetzt wird garantiert, dass connection.end()
wird nur aufgerufen, wenn alle Ihre Abfragen abgeschlossen sind.