为了账号安全,请及时绑定邮箱和手机立即绑定

如何在节点js中制造mysql查询的结果

如何在节点js中制造mysql查询的结果

胡说叔叔 2022-11-11 16:37:49
我想在节点 js 中制造 mysql 的结果我想做出这样的结果[  {  "m_idx" :1 , "contents" :             {                "m_name" : "a",               "m_name" : "b",             } }, "m_idx" :2, "contents" :             {                "m_name" : "c",             } }]但我的结果是{        "m_idx": 1,        "contents": [            {                "m_name": "a"            }        ]    },    {        "m_idx": 1,        "contents": [            {                "m_name": "b"            }        ]    },我不知道如何制造结果任何人都可以帮助我...?请问这是我练习的代码let result = [];    let categories = [];    connection.query(sql, function (err, rows) {        if (res.status(200)) {            rows.forEach(function (row, index) {                    let variable = {                        m_idx: row.m_idx,                        contents: []                    };                    categories.push(variable);                    variable.contents.push({                        m_name: row.m_name,                        name: row.name,                    })            });            res.json(categories);        }    });我的数据库结果是这样的-----|1|a||1|b||2|c|-----
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

我猜contents你想要的是一个数组而不是一个对象,因为同一个对象中不应该有相同的属性。


也许这会对你有所帮助。


const rows = [

  {"m_idx": 1, "m_name": "a"},

  {"m_idx": 1, "m_name": "b"},

  {"m_idx": 2, "m_name": "c"}

]


const map = new Map();

rows.forEach(row => {

  if (map.get(row.m_idx) === undefined) {

    map.set(row.m_idx, {

      "m_idx": row.m_idx,

      "contents": [{"m_name": row.m_name}]

    });

  } else {

    map.get(row.m_idx).contents.push({"m_name": row.m_name});

  }

});


const result = [];


map.forEach((v, k) => {

  result.push(v);

});


console.log(result);


查看完整回答
反对 回复 2022-11-11
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号