Vedo due problemi nel tuo codice:
- Stai chiamando
connection.end()
in modo sincrono, ma le query vengono eseguite in un flusso asincrono. Devi chiamareconnection.end()
solo quando hai terminato la seconda query. - Stai usando un normale
for
loop per eseguire chiamate asincrone (tu outout loop).
Per realizzare ciò che stai cercando di fare, devi considerare quegli scenari asincroni. Potresti usare promises
o un modulo come async
, che fornisce molti metodi per gestire i flussi asincroni, come 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();
}
});
Ora garantirà che connection.end()
verrà chiamato solo quando tutte le tue richieste saranno terminate.