Генерация множественных вложенных JSON-ответов с использованием bluebird JS, express, Knex - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь сгенерировать вложенный ответ JSON, используя bluebird JS с mysql.

Ожидаемый 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);
    })
});
...