使用bluebird JS,express,Knex生成多个嵌套的JSON响应

时间:2019-01-18 09:28:35

标签: node.js json express bluebird

我正在尝试使用蓝鸟JS和mysql生成嵌套的JSON响应。

期望的JSON如下所示

[
 {
     "record_id":4,
     "parent_id":4,
     "record_type":"X",
     "display_name":"F",
     "item":[
        {
           "record_id":31,
           "parent_id":4,
           "record_type":"Z",
           "display_name":"G",
           "subItem":[
            {
                "record_id":400,
                "parent_id":31,
                "record_type":"V",
                "display_name":"S"
            }
           ]
        },
        {
           "record_id":35,
           "parent_id":4,
           "record_type":"Z",
           "display_name":"H"
        }
     ]
  }
]

我能够生成嵌套的JSON,直到“ item”,并且不确定如何获取“ subitem”。

我的代码:

var Promise = require('bluebird')

knex.select().table({header:'mytable'}).where('record_type','X')
    .then (function(rows){
        var promises = rows.map(function(header){
            return knex.select().table({item:'mytable'}).whereRaw('parent_id != record_id').andWhere('parent_id',header.record_id)
                .then(function(item){
                    header['item'] = item
                    return header;
                });
        })

       return Promise.all(promises)     
    }).then(function(elements){     
        response.json (elements);
    })
});

0 个答案:

没有答案