Typescript Nestjs从实体类创建自定义json响应
我正在使用typeorm和MySQL。我的实体存储不同类型的体育数据,如足球、田径->100米、200米、400米 在get调用中,我需要按游戏类型分组数据,即田径或足球,并创建嵌套的JSON,如下所示 JSON格式: { 我的实体类如下所示:Typescript Nestjs从实体类创建自定义json响应,typescript,serialization,nestjs,typeorm,class-transformer,Typescript,Serialization,Nestjs,Typeorm,Class Transformer,我正在使用typeorm和MySQL。我的实体存储不同类型的体育数据,如足球、田径->100米、200米、400米 在get调用中,我需要按游戏类型分组数据,即田径或足球,并创建嵌套的JSON,如下所示 JSON格式: { 我的实体类如下所示: @Entity('competition') export class CompetitionEntity { @PrimaryGeneratedColumn() id:Number @Column({ type: 'tim
@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();
在获得结果表单数据库之后,我希望按gameType列对数据进行分组,并将其作为嵌套的json发送
请在这方面指导我
谢谢大家您可以通过这种方式对结果集和结果组进行迭代
const competities=等待qb.getMany()。然后(结果=>{
返回结果。减少((上一个,当前)=>{
如果(!上一个[当前游戏类型]){
上一个[当前游戏类型]=[];
}
上一个[当前游戏类型]。推送(当前);
返回上一个;
}, {})
});
您可以通过这种方式对结果集和结果组进行迭代
const competities=等待qb.getMany()。然后(结果=>{
返回结果。减少((上一个,当前)=>{
如果(!上一个[当前游戏类型]){
上一个[当前游戏类型]=[];
}
上一个[当前游戏类型]。推送(当前);
返回上一个;
}, {})
});
您的解决方案对我很有帮助,但服务中方法的返回类型是什么?因为此逻辑在最后创建了对象。现在,我得到TS2740:type“{}”缺少类型“”中的以下属性:length、pop、push、concat和26…async getAllCompetition(userId:number):Promise{return competities}返回的类型是object:{}
。执行此代码的函数需要数组,但所需的结构是object以这种方式增强函数async getAllCompetition(userId:number):Promise{return competities}
或完全删除返回类型async getAllCompetition(userId:number){return competities}
我的问题似乎已经解决了。最后一个问题是,如果我想要返回entitytype的arry(例如:CompetitionEntity[]),该怎么办分组数据后…我需要如何更改json响应和代码您的解决方案对我很有帮助,但服务中方法的返回类型是什么?因为此逻辑在末尾创建对象。现在我得到TS2740:类型“{}”缺少类型“”中的以下属性:长度、pop、push、concat和26…异步getAllCompetition(userId:number):Promise{return competities}返回的类型是object:{}
。执行此代码的函数需要数组,但所需的结构是object以这种方式增强函数异步getAllCompetition(userId:number):Promise{return competities}
或完全删除返回类型异步getAllCompetition(userId:number){return competities}
我的问题似乎已经解决了。最后一个问题是,如果我想在分组数据后返回entitytype(例如:CompetitionEntity[]),我需要如何更改json响应和代码
const qb = await getRepository(CompetitionEntity)
.createQueryBuilder('competition')
const competitions = await qb.getMany();