Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在NodeJS中通过MySQL查询生成嵌套JSON结果?_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 如何在NodeJS中通过MySQL查询生成嵌套JSON结果?

Javascript 如何在NodeJS中通过MySQL查询生成嵌套JSON结果?,javascript,mysql,node.js,Javascript,Mysql,Node.js,我有两个MySQL表,我们称之为kj,它是jj的父表,作为子表。目前,我在NodeJS代码中编写了SQL查询以返回此输出: [{ “id_kj”:1, “标题”:标题1, “说明”:“说明1”, “image_kj”:“image1”, “id_jj”:66, “title_jj”:“title1”, “说明”:“说明1”, “image_jj”:“image1” }, { “id_kj”:1, “标题”:标题1, “说明”:“说明1”, “image_kj”:“image1”, “id_jj

我有两个MySQL表,我们称之为
kj
,它是
jj
的父表,作为子表。目前,我在NodeJS代码中编写了SQL查询以返回此输出:

[{
“id_kj”:1,
“标题”:标题1,
“说明”:“说明1”,
“image_kj”:“image1”,
“id_jj”:66,
“title_jj”:“title1”,
“说明”:“说明1”,
“image_jj”:“image1”
},
{
“id_kj”:1,
“标题”:标题1,
“说明”:“说明1”,
“image_kj”:“image1”,
“id_jj”:67,
“title_jj”:“title1”,
“说明”:“说明1”,
“image_jj”:“image1”
},
{
“id_kj”:1,
“标题”:标题1,
“说明”:“说明1”,
“image_kj”:“image1”,
“id_jj”:68,
“title_jj”:“title1”,
“说明”:“说明1”,
“image_jj”:“image1”
},
{
“id_kj”:2,
“标题”——“标题2”,
“说明”:“说明2”,
“image_kj”:“image2”,
“id_jj”:71,
“title_jj”:“title1”,
“说明”——“说明2”,
“image_jj”:“image2”
},
{
“id_kj”:2,
“标题”——“标题2”,
“说明”:“说明2”,
“image_kj”:“image2”,
“id_jj”:69,
“title_jj”:“title1”,
“说明”——“说明2”,
“image_jj”:“image2”
},
{
“id_kj”:2,
“标题”——“标题2”,
“说明”:“说明2”,
“image_kj”:“image2”,
“id_jj”:70,
“title_jj”:“title1”,
“说明”——“说明2”,
“image_jj”:“image2”
},
{
“id_kj”:3,
“标题”——“标题3”,
“说明”:“说明3”,
“image_kj”:“image3”,
“id_jj”:72,
“title_jj”:“title3”,
“说明”——“说明3”,
“image_jj”:“image3”
},
{
“id_kj”:3,
“标题”——“标题3”,
“说明”:“说明3”,
“image_kj”:“image3”,
“id_jj”:73,
“title_jj”:“title3”,
“说明”——“说明3”,
“image_jj”:“image3”
},
{
“id_kj”:3,
“标题”——“标题3”,
“说明”:“说明3”,
“image_kj”:“image3”,
“id_jj”:74,
“title_jj”:“title3”,
“说明”——“说明3”,
“image_jj”:“image3”
}

]
一个非常有效且逻辑上相对简单的选项是在内存中执行连接

我们通过连接字段title_kj创建result_kj表的映射,然后迭代result_jj表以填充result_kj子项

let result_kj=[{“id_kj”:1,“title_kj”:“title2”,“description_kj”:“description 1”,“image_kj”:“image1”,“id_jj”:66,“title_jj”:“title2”,“description_jj”:“description 1”,“image_jj”:“image1”,“title_kj”:“title2”,“description_kj”:“description_kj”:“description 1”,“image1”,“id_jj”:“title2”,“描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述标题:标题:描述:描述:图片2,图片:图片2,图片:图片2,图片:图片2,图片:图片2,图片:图片2,图片:图片2,图片:图片2,图片:图片2,图片:图片2,图片:69,图片:描述:图片2,图片:图片图像2,“id_jj”:70,“title_jj”:“title1”,“description_jj”:“description 2”,“image_jj”:“image2”{“id_kj”:3,“title3”,“description_kj”:“description 3”,“image_kj”:“image3”,“id_jj”:72,“title_jj”:“title3”,“description_jj”:“description 3”,“image_jj”:“image3”{“id_kj”:“title3”,“description"”描述3,图像3,图像3,图像73,图像3,图像74,图像3,图像3,图像3,图像3,图像3,图像3,图像3,图像3,图像3,图像3,图像3,图像3,图像3;
让结果_jj=[{“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,“title1”,“description_jj”:“description1”,“image_jj”:“image1”},{“id_jj”:“title2”描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述:描述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 sortKey=“title_kj”;
结果排序((a,b)=>{
if(a[sortKey]b[sortKey]){
返回1;
}
返回0;
})
设kjMap=result_kj.reduce((映射,行)=>{
key=行[“title_kj”];
map[键]=行;
返回图;
}, {})
让resultMap=result\u jj.reduce((映射,行)=>{
let key=行[“title_jj”];
if(map[key]){
如果(!map[key].children)map[key].children=[];
map[key].children.push(行);
}
返回图;
},kjMap)
让result=Object.values(resultMap);

console.log(“Result:,Result);
Hi,谢谢你的回答。如果我错了,请纠正我,为了生成
Result_kj
Result_jj
我需要两个查询?Hi@MAnsyori你绝对可以!但是,这两个查询的资源密集程度可能低于