Ik zie twee problemen in uw code:
- Je belt
connection.end()
synchroon, maar uw query's worden in een asynchrone stroom uitgevoerd. Je moetconnection.end()
. aanroepen pas als je klaar bent met de tweede vraag. - Je gebruikt een gewone
for
lus om asynchrone oproepen uit te voeren (u buiten de lus).
Om te bereiken wat u probeert te doen, moet u rekening houden met die asynchrone scenario's. U kunt promises
gebruiken
of een module zoals async
, die u veel methoden biedt om met asynchrone stromen om te gaan, zoals 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 zal het garanderen dat connection.end()
wordt gewoon gebeld wanneer al uw vragen zijn voltooid.