typescript - Nestjs-从实体类创建自定义 json 响应
问题描述
我正在使用 typeorm 和 MySQL。我的实体存储不同类型的运动数据,例如 Football、Athletics->100m、200m、400m。
在 get 调用中,我希望按 gameType 分组数据,即田径或足球,并希望创建嵌套 JSON,如下所示
JSON 格式: {
"footBall":[
{"location":"use",gameType:"footbal", "goals":2,"result":"won"},
{"location":"use",gameType:"footbal", "goals":1,"result":"draw"}
],
"athletics":[
{"location":"poland",gameType:"athletics", gameSubType:"100m", "rank":2,"result":"first place"},
{"location":"ireland",gameType:"athletics", gameSubType:"200m", "rank":1,"result":"second place"}
]
}
我的实体类是这样的:
@Entity('competition')
export class CompetitionEntity {
@PrimaryGeneratedColumn()
id:Number
@Column({ type: 'timestamp', default: () => "CURRENT_TIMESTAMP"})
date:Date
@Column()
location:String
@Column()
rank:Number
@Column()
eventType: string
@Column()
minutes: number
@Column()
seconds: number
@Column()
miliseconds: number
@Column()
gameType: string //it can take values like athletics or football or baseball etc
@Column()
gameSubType: string //it can take value like 100m, 200m, relay etc
}
在服务中,我编写了这样的代码来获取竞争表中的所有数据
const qb = await getRepository(CompetitionEntity)
.createQueryBuilder('competition')
const competitions = await qb.getMany();
获取结果表单数据库后,我想按游戏类型列分组数据并将其作为嵌套 json 发送。
请指导我
谢谢你们
解决方案
您可以以这种方式遍历结果集和分组
const competitions = await qb.getMany().then(results => {
return results.reduce((prev, curr) => {
if (!prev[curr.gameType]) {
prev[curr.gameType] = [];
}
prev[curr.gameType].push(curr);
return prev;
}, {})
});
推荐阅读
- python - 在 docker 中运行的 python 应用程序和 postgres db 之间的连接有问题
- docker - 在 GitHub 操作中,如何覆盖服务的入口点?
- javascript - Alpaca JS 未正确重新排序数组复选框
- postgresql - Sequelize 关于设置时区和 client_min_messages 的默认查询
- deep-learning - 主干在神经网络中意味着什么?
- python - 将对象实例传递给 FastAPI 路由器
- javascript - 找出deltaY距离?
- html - 同一行的两个标题粘在一起 - Bootstrap
- javascript - 如何使用键多次将相同的方法应用于不同的数组元素?
- java - Java创建带参数的线程