Je vois deux problèmes dans votre code :
- Vous appelez
connection.end()
de manière synchrone, mais vos requêtes s'exécutent dans un flux asynchrone. Vous devez appelerconnection.end()
uniquement lorsque vous avez terminé la deuxième requête. - Vous utilisez un
for
normal boucle pour exécuter des appels asynchrones (votre boucle externe).
Pour accomplir ce que vous essayez de faire, vous devez considérer ces scénarios asynchrones. Vous pouvez utiliser des promises
ou un module comme async
, qui vous fournit de nombreuses méthodes pour gérer les flux asynchrones, comme 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();
}
});
Maintenant, il garantira que connection.end()
sera appelé lorsque toutes vos requêtes seront terminées.