mysql - 将 RowDataPacket 记录合并为一个并返回 JSON

标签 mysql json node.js

我有一个返回类似于以下内容的查询:

[ RowDataPacket { username: 'mario', content: 'foo', quantity: 4 },
  RowDataPacket { username: 'mario', content: 'bar', quantity: 6 },
  RowDataPacket { username: 'mario', content: 'fizz', quantity: 4 } ]

我想合并所有的RowDataPacket并返回

{
    mario: {
        foo: 4,
        bar: 4,
        fizz: 4
    }
}

如何转换记录?

最佳答案

Array.prototype.reduce()是你的 friend 。

像这样的东西应该可以解决问题:

const rows = [
  { username: 'mario', content: 'foo', quantity: 4 },
  { username: 'mario', content: 'bar', quantity: 6 },
  { username: 'mario', content: 'fizz', quantity: 4 }
];

const response = rows.reduce((acc, row) => Object.assign(acc, { [row.username]: Object.assign({ [row.content]: row.quantity }, acc[row.username] || { }) }), { });

对于单行来说有点神秘,所以你可能想要扩展它。

关于mysql - 将 RowDataPacket 记录合并为一个并返回 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48637545/

相关文章:

mysql - 创建 'users' 和 'friends' 关系

javascript - 如何使用 JSON 服务器更新 ReactJS 中的数据

java - Ajax 请求 Spring REST api 415 错误

javascript - 哪个带有 node.js 和 socket.io 的免费服务器?

javascript - Nodejs模块函数返回未定义,不是异步的

java - 如何创建带有数据库的 .jar?

MySQL SELECT 查询条件不符合预期 - 正确的格式是什么?

mysql - 如何使用别名显示天和月而不出现错误 - mysql

javascript - Highcharts 数据导入 JSON - 格式化

javascript - 在Ghost Leg代码挑战的一些测试用例中未通过