Saya melihat dua masalah dalam kode Anda:
- Anda memanggil
connection.end()
sinkron, tetapi kueri Anda berjalan dalam aliran asinkron. Anda harus memanggilconnection.end()
hanya jika Anda telah menyelesaikan kueri kedua. - Anda menggunakan
for
biasa loop untuk menjalankan panggilan asinkron (Anda keluar dari loop).
Untuk mencapai apa yang Anda coba lakukan, Anda harus mempertimbangkan skenario asinkron tersebut. Anda dapat menggunakan promises
atau modul seperti async
, yang memberi Anda banyak metode untuk menangani aliran asinkron, seperti 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();
}
});
Sekarang ini akan menjamin bahwa connection.end()
hanya akan dipanggil setelah semua pertanyaan Anda selesai.