使用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);
            }
          })
        }
      });
    };

考虑添加细节,比如你得到哪一个错误,你试图达到什么,以及你尝试了什么。错误错误:在发送之后不能设置页眉。你需要通过点击编辑按钮来添加这个问题。评论是临时的。可能重复的