我想在节点 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);
添加回答
举报
0/150
提交
取消
