Jeg ser to problemer i din kode:
- Du ringer til
connection.end()
synkront, men dine forespørgsler kører i et asynkront flow. Du skal ringe tilconnection.end()
først når du er færdig med den anden forespørgsel. - Du bruger en almindelig
for
sløjfe for at køre asynkrone opkald (du yder sløjfe).
For at opnå det, du prøver at gøre, skal du overveje disse asynkrone scenarier. Du kan bruge promises
eller et modul som async
, der giver dig en masse metoder til at håndtere assynkrone flows, så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 vil det garantere, at connection.end()
vil bare blive kaldt, når alle dine forespørgsler er afsluttet.