Reputation: 3
I have code like this:
exports.get_menu = function(req, fn) {
var sql_query = "SELECT id,parent_id,nama,target,keterangan,urutan,status";sql_query +=" FROM tbl_menu WHERE parent_id=0 ORDER BY urutan ASC";
var query = koneksi.query(sql_query, function(err, rows) {
if (err) {
throw err;
console.log(err);
} else {
rows.forEach(function(d) {
var sql_query2 = "SELECT id,parent_id,nama,target,keterangan,urutan,status";sql_query2 +=" FROM tbl_menu WHERE parent_id = "+d.id+" ORDER BY urutan ASC";
var query2 = koneksi.query(sql_query2, function(err, rows2) {
if (err) {
return fn(false, err);
console.log(err);
} else {
return fn(true, rows2)
};
});
);
}
});
};
It always results in an error.
Upvotes: 0
Views: 75
Reputation: 182
You are using db query inside forEach loop and each time you call fn function which is wrong. To avoid the can't set headers error use promise or async module.
var async = require('async');
exports.get_menu = function(req, fn){
var sql_query = "SELECT id,parent_id,nama,target,keterangan,urutan,status";
sql_query +=" FROM tbl_menu WHERE parent_id=0 ORDER BY urutan ASC";
var query = koneksi.query(sql_query,function(err,rows){
if(err) {
console.log(err);
throw err;
} else {
var result = [];
async.each(rows, function(row, callback){
var sql_query2 = "SELECT id,parent_id,nama,target,keterangan,urutan,status";
sql_query2 +=" FROM tbl_menu WHERE parent_id = "+row.id+" ORDER BY urutan ASC";
var query2 = koneksi.query(sql_query2,function(err,rows2){
if(err) {
return callback(err);
}
else{
result.push(rows2);
return callback()
};
});
}, function(err){
if(err){
console.log(err);
return fn(false, err);
}
else{
return fn(true, result);
}
})
}
});
};
Upvotes: 1