[英]Wrong property is included in created object
我目前正在使用帶有 fastify 適配器的 nestjs 開發應用程序
但是 object 結構有些奇怪。
遵循所有相關的類和方法:
@Get()
@ApiOperation({
description: "Get all user admin",
})
async findAll(
@Query() filter: GetListAdminReqFilter,
@Query() pagination: PaginatedReqDto
): Promise<RestRespDto<GetListAdminRespDto[]>> {
return new RestRespDto({
data: await this.adminService.findAll(
new GetListAdminReqDto(filter, pagination)
),
});
}
export class GetListAdminReqDto extends PaginatedReqDto {
constructor(filter: GetListAdminReqFilter, pagination: PaginatedReqDto) {
super();
this.filter = filter;
this.pagination = pagination.pagination;
this.page = pagination.page;
}
filter?: GetListAdminReqFilter;
}
export class PaginatedReqDto {
@ApiPropertyOptional({
default: 10,
description: "Number of items to retrieve",
})
pagination?: number;
@ApiPropertyOptional({
description: "Page number, e.g:1 ",
default: 1,
})
page?: number;
}
export class GetListAdminReqFilter {
@ApiPropertyOptional()
@IsOptional()
name?: string;
@ApiPropertyOptional()
@IsOptional()
email?: string;
@ApiPropertyOptional()
@IsOptional()
divisi?: string;
@ApiPropertyOptional({ enum: AdminStatusEnum})
@IsOptional()
status?: AdminStatusEnum;
}
GetListAdminReqDto
object 的結果如下:
{
filter: [Object: null prototype] {
pagination: '10',
page: '1',
name: 'asdfasdf',
email: 'asdfasdf',
divisi: 'asdfasdf'
},
pagination: '10',
page: '1'
}
為什么pagination
和page
屬性也包含在filter
中?,我不明白發生了什么,任何幫助將不勝感激
我的猜測是@Query() filter: GetListAdminReqFilter
正在接收page
和pagination
屬性,因為您的ValidationPipe
允許 DTO 之外的屬性。 您可以更改全局ValidationPipe.whitelist
屬性:
app.useGlobalPipes(
new ValidationPipe({
whitelist: true, // this prevents properties outside the DTO to be ignored
}),
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.