Javascript 在nodejs中创建嵌套数组

Javascript 在nodejs中创建嵌套数组,javascript,mysql,node.js,Javascript,Mysql,Node.js,我有一个表名master_调查、master_问题和master_答案。从这些表中,我想为json查询创建一个嵌套数组结果,但我遇到了一些问题,因为结果是无法给出任何响应 我已经搜索了问题出在哪里,但似乎问题出在这段代码上,然后我试图更改代码,但错误太多,所以我决定保留第一段代码 这是我的密码 this.getSurvey = function(req,res,next) { var id = req.query.id; connection.acquire(function(err,con

我有一个表名master_调查、master_问题和master_答案。从这些表中,我想为json查询创建一个嵌套数组结果,但我遇到了一些问题,因为结果是无法给出任何响应

我已经搜索了问题出在哪里,但似乎问题出在这段代码上,然后我试图更改代码,但错误太多,所以我决定保留第一段代码

这是我的密码

this.getSurvey = function(req,res,next) {
var id = req.query.id;
 connection.acquire(function(err,con){
  var survey = 'SELECT ms.id ,ms.title, ms.created_at, count(mq.id) question FROM master_surveys ms, master_questions mq WHERE ms.id=mq.survey_id';
  con.query(survey, function(err,data){
    if (data.length > 0) {
      var survey = data[0];
      var question = 'SELECT mq.id, mq.title, mq.type, mq.survey_id FROM master_surveys ms, master_questions mq WHERE ms.id=mq.survey_id and ms.id="'+survey.id+'"';
      con.query(question, function(err, data){
        if (data.length > 0) {
          var answer = 'SELECT ma.id, ma.title, ma.selected_answer, ma.question_id FROM master_questions mq, master_answers ma WHERE mq.id=ma.question_id and mq.id="'+id+'"';
          con.query(answer, function(err, data){
            if(data.length>0){
              question.data = data;
            }
            if (data.question== null) {
              survey.data = [];
            }
            survey.data.push(question);
          }), function (err) {
            if (survey.questions.length == questions.length) {
          res.json(survey);
        }
          }
          ;
        };
      });
    };
  });
});

})

当您的查询没有返回任何结果或甚至发出错误时,您不会回答http请求。我建议先从一个简单的查询开始,如下所示:

con.query('SELECT * FROM your_table', function(err, data) {
    if(err)
        // TODO reply the HTTP request with an appropriate error code
    else {
        if(data.length > 0) {
            // TODO parse the result and form you json object
            res.json(/* your json object */);
        }
        else {
            res.json({}); // for example
        }
    }
});
只有当你得到它时,你才能努力改进它,直到你达到你的目标

您不应该像那样连续执行多个sql查询,或者至少执行尽可能少的查询。这当然是一条路要走


最后,您还应该知道您的代码是开放的SQL注入,请参阅。

您应该告诉我们如何为您的内容(哪个web服务器)、您使用的nodejs包(尤其是mysql连接)(
require()
)提供服务,以及服务器上执行的日志跟踪。噢,感谢您提供了解决方案。。我会试试:)@vtelliery不客气:)如果这解决了你的问题,别忘了更新帖子: