使用Node.js和MySQL进行两次查询和循环
我有这样的代码:使用Node.js和MySQL进行两次查询和循环,mysql,node.js,express,Mysql,Node.js,Express,我有这样的代码: 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,
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)
};
});
);
}
});
};
它总是导致错误。您在forEach循环中使用db query,每次调用fn函数时,都是错误的。要避免“无法设置头”错误,请使用promise或async模块
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);
}
})
}
});
};
考虑添加细节,比如你得到哪一个错误,你试图达到什么,以及你尝试了什么。错误错误:在发送之后不能设置页眉。你需要通过点击编辑按钮来添加这个问题。评论是临时的。可能重复的