我的回应类型之一
export class VoucherDto {
@ApiProperty({ example: 'fff', required: true, description: '' })
name!: string;
@ApiProperty({ example: 'fff', required: false, description: '' })
expirationPeriodStart!: Date;
@ApiProperty({ example: 'fff', required: false, description: '' })
expirationPeriodEnd!: Date;
}
我常见的 Dto 看起来像这样。
import { ApiProperty } from '@nestjs/swagger';
export class BaseResDto {
@ApiProperty({ default: 1, example: 1 })
page: number;
@ApiProperty({ default: 1, example: 10 })
totalPage: number;
}
export class ApiResponseWrapper<Some> extends BaseResDto {
@ApiProperty({ type: [Object] })
data: { Some };
}
但是显示是这样的。
{
"page": 1,
"totalPage": 10,
"data": [
{}
]
}
我怎样才能这样显示?
{
"page": 1,
"totalPage": 10,
"data": [
{
"name": "test",
"expirationPeriodStart": "2024-02-01T01:41:53.770Z",
"expirationPeriodEnd": "2024-12-01T01:41:53.770Z",
}
]
}
我是 Java、nestjs、typeorm 的新手。 我按照chatGPT的解决方案但无法解决。
找到解决方案。
export class ApiResponseWrapper<T> extends BaseResDto {
@ApiProperty({
oneOf: [
{ $ref: getSchemaPath(VoucherDto) },
{ $ref: getSchemaPath(SomeOtherDtos) },
...
],
})
data: T[];
}
并致电
ApiResponseWrapper