Виждам два проблема във вашия код:
- Извиквате
connection.end()
синхронно, но вашите заявки се изпълняват в асинхронен поток. Трябва да извикатеconnection.end()
само когато завършите втората заявка. - Използвате обикновен
for
цикъл за изпълнение на асинхронни повиквания (извън цикъла).
За да постигнете това, което се опитвате да направите, трябва да вземете предвид тези асинхронни сценарии. Можете да използвате promises
или модул като async
, което ви предоставя много методи за справяне с асинхронни потоци, като 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();
}
});
Сега ще гарантира, че connection.end()
ще бъде извикан само когато всичките ви заявки приключат.