来自Node.js / ExpressJs中嵌套mysql查询的嵌套Json

时间:2018-12-03 20:33:51

标签: mysql node.js json express

我正在从nodejs / expressjs中的mysql数据库中获取数据,并希望从中创建嵌套的json。

我想要这样创建Json对象:

[
{id : 1,countryName:'USA',population:10000,
cities : [
{id:1,cityName:'NY',countryId:1},{id:2,cityName:'Chicago',countryId:1}
]
},
{id : 2,countryName:'Canada',population:20000,
cities : [
{id:1,cityName:'Toronto',countryId:2},{id:2,cityName:'Ottawa',countryId:2}
]
}

]

这是我在expressJs中的代码,但这给了我一个空的JSON数组

app.get("/checkJson",function(req,res){
  var country = {};

var outerobj = {};
 var outerArray = [];

   conn.query("select * from country",function(err,result){
     for(var i = 0 ;i<result.length;i++){
        var cityobj = {};
        var city = [];
       conn.query("select * from city where countryId ="+result[i].id,function(err,cityResult){
         for(var j = 0;j<cityResult.length;j++){
           cityobj = {cityName:cityResult[j].name,countryId:cityResult[j].countryId};
           city.push(cityobj);
         } //end  city forloop

       }) //end city Query

       outerobj = {id:result[i].id,countryName:result[i].name,pop:result[i].population,cities:city};
       outerArray.push(outerobj);

     } //end country forloop
   }) // end country query
   console.log(outerArray);
})

1 个答案:

答案 0 :(得分:0)

MySQL返回平面对象。我们要嵌套连接的对象。

假设我们有课程表,每个课程都属于一个部门,并且有不同的课程部分。我们希望有一个结果课程数组,其中具有一个Department对象属性,并具有一个课程部分列表。

这是kyleladd在github上的一个很好的解决方案

{{3}}