亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在NodeJS中通過MySQL查詢獲得嵌套的JSON結果?

如何在NodeJS中通過MySQL查詢獲得嵌套的JSON結果?

米脂 2022-08-27 09:44:55
我有2個MySQL表,讓我們稱之為子表的父表。目前,我已經在我的NodeJS代碼中編寫了SQL查詢以返回以下輸出:kjjj[{    "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"  }]
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

一個應該非常有效且邏輯上相對簡單的選項是在內存中執行聯接。


我們通過連接字段title_kj創建result_kj表的映射,然后循環訪問result_jj表以填充result_kj子表。


let result_kj = [{ "id_kj": 1, "title_kj": "title2", "description_kj": "description1", "image_kj": "image1", "id_jj": 66, "title_jj": "title2", "description_jj": "description1", "image_jj": "image1" }, { "id_kj": 1, "title_kj": "title2", "description_kj": "description1", "image_kj": "image1", "id_jj": 67, "title_jj": "title2", "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" } ]; 

let result_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, "title_jj": "title1", "description_jj": "description1", "image_jj": "image1" }, { "id_jj": 71, "title_jj": "title2", "description_jj": "description2", "image_jj": "image2" }, { "id_jj": 69, "title_jj": "title2", "description_jj": "description2", "image_jj": "image2" }, { "id_jj": 70, "title_jj": "title2", "description_jj": "description2", "image_jj": "image2" }, { "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" } ]; 

   

// Sort by the relevant key

const sortKey = "title_kj";

result_kj.sort((a, b) => {

    if (a[sortKey] < b[sortKey]) {

        return -1;

    }

    if (a[sortKey] > b[sortKey]) {

        return 1;

    }

    return 0;

})


let kjMap = result_kj.reduce((map, row) => {

    key = row["title_kj"]; 

    map[key] = row;

    return map;

}, {})


let resultMap = result_jj.reduce((map, row) => { 

    let key = row["title_jj"];

    if (map[key]) { 

        if (!map[key].children) map[key].children = [];

        map[key].children.push(row);

    }

    return map;

}, kjMap)


let result = Object.values(resultMap);

console.log("Result:", result);


查看完整回答
反對 回復 2022-08-27
  • 1 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號