【发布时间】:2020-09-07 17:06:26
【问题描述】:
我有 2 个 MySQL 表,我们称它为 kj,它是 jj 的父表作为子表。目前,我在我的 NodeJS 代码中编写了 SQL 查询以返回此输出:
[{
"id_kj": 1,
"title_kj": "title1",
"description_kj": "description1",
"image_kj": "image1",
"id_jj": 66,
"title_jj": "title1",
"description_jj": "description1",
"image_jj": "image1"
},
{
"id_kj": 1,
"title_kj": "title1",
"description_kj": "description1",
"image_kj": "image1",
"id_jj": 67,
"title_jj": "title1",
"description_jj": "description1",
"image_jj": "image1"
},
{
"id_kj": 1,
"title_kj": "title1",
"description_kj": "description1",
"image_kj": "image1",
"id_jj": 68,
"title_jj": "title1",
"description_jj": "description1",
"image_jj": "image1"
},
{
"id_kj": 2,
"title_kj": "title2",
"description_kj": "description2",
"image_kj": "image2",
"id_jj": 71,
"title_jj": "title1",
"description_jj": "description2",
"image_jj": "image2"
},
{
"id_kj": 2,
"title_kj": "title2",
"description_kj": "description2",
"image_kj": "image2",
"id_jj": 69,
"title_jj": "title1",
"description_jj": "description2",
"image_jj": "image2"
},
{
"id_kj": 2,
"title_kj": "title2",
"description_kj": "description2",
"image_kj": "image2",
"id_jj": 70,
"title_jj": "title1",
"description_jj": "description2",
"image_jj": "image2"
},
{
"id_kj": 3,
"title_kj": "title3",
"description_kj": "description3",
"image_kj": "image3",
"id_jj": 72,
"title_jj": "title3",
"description_jj": "description3",
"image_jj": "image3"
},
{
"id_kj": 3,
"title_kj": "title3",
"description_kj": "description3",
"image_kj": "image3",
"id_jj": 73,
"title_jj": "title3",
"description_jj": "description3",
"image_jj": "image3"
},
{
"id_kj": 3,
"title_kj": "title3",
"description_kj": "description3",
"image_kj": "image3",
"id_jj": 74,
"title_jj": "title3",
"description_jj": "description3",
"image_jj": "image3"
}
]
如何使结果嵌套?我需要id_jj, title_jj, description_jj, image_jj 成为每个id_kj 键的孩子。这是我需要的结果:
[{
"id_kj": 1,
"title_kj": "title1",
"description_kj": "description1",
"image_kj": "image1",
"children": [{
"id_jj": 66,
"title_jj": "title1",
"description_jj": "description1",
"image_jj": "image1"
},
{
"id_jj": 67,
"title_jj": "title1",
"description_jj": "description1",
"image_jj": "image1"
},
{
"id_jj": 68,
"title_jj": "title1",
"description_jj": "description1",
"image_jj": "image1"
}
]
},
{
"id_kj": 2,
"title_kj": "title2",
"description_kj": "description2",
"image_kj": "image2",
"children": [{
"id_jj": 71,
"title_jj": "title1",
"description_jj": "description2",
"image_jj": "image2"
},
{
"id_jj": 69,
"title_jj": "title1",
"description_jj": "description2",
"image_jj": "image2"
},
{
"id_jj": 70,
"title_jj": "title1",
"description_jj": "description2",
"image_jj": "image2"
}
]
},
{
"id_kj": 3,
"title_kj": "title3",
"description_kj": "description3",
"image_kj": "image3",
"children": [{
"id_jj": 72,
"title_jj": "title3",
"description_jj": "description3",
"image_jj": "image3"
},
{
"id_jj": 73,
"title_jj": "title3",
"description_jj": "description3",
"image_jj": "image3"
},
{
"id_jj": 74,
"title_jj": "title3",
"description_jj": "description3",
"image_jj": "image3"
}
]
}
]
这是我的代码:
const getData = async function() {
return new Promise(function(resolve) {
const query = "SELECT a.`id` AS 'id_kj', a.`title` AS 'title_kj', a.`description` AS 'description_kj', a.`image` AS 'image_kj',\n" +
"b.`id` AS 'id_jj', b.`title` AS 'title_jj', b.`description` AS 'description_jj', b.`image` AS 'image_jj' FROM `kj` AS a LEFT JOIN `jj` AS b\n" +
"ON a.`id` = b.`id_kj` GROUP BY a.`id`, b.`id` ORDER BY a.`title` ASC, b.`title` DESC";
con.query(query, function(error, results) {
if (results.length > 0) {
resolve(results);
} else {
resolve(null);
}
});
});
};
module.exports = {
getNestedData: async function(baseResponse) {
const data = await getPelatihan();
return data;
},
};
我还创建了我的表的 SQL Fiddle 方案,这是小提琴链接: db-fiddle
任何帮助将不胜感激
谢谢
【问题讨论】:
标签: javascript mysql node.js