コードに2つの問題があります:
-
connection.end()
を呼び出しています 同期的に実行されますが、クエリは非同期フローで実行されます。connection.end()
を呼び出す必要があります 2番目のクエリを終了したときのみ。 - 通常の
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()
が保証されます。 すべてのクエリが終了したときに呼び出されます。