Vejo dois problemas no seu código:
- Você está chamando
connection.end()
de forma síncrona, mas suas consultas são executadas em um fluxo assíncrono. Você tem que chamarconnection.end()
somente quando você terminar a segunda consulta. - Você está usando um
for
normal loop para executar chamadas assíncronas (você loop externo).
Para realizar o que você está tentando fazer, você deve considerar esses cenários assíncronos. Você pode usar
promises
ou um módulo como async
, que fornece muitos métodos para lidar com fluxos assíncronos, como 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();
}
});
Agora vai garantir que
connection.end()
será chamado apenas quando todas as suas consultas terminarem.