簡體   English   中英

創建的 object 中包含錯誤的屬性

[英]Wrong property is included in created object

我目前正在使用帶有 fastify 適配器的 nestjs 開發應用程序

但是 object 結構有些奇怪。

遵循所有相關的類和方法:

  1. Controller 端點處理程序
    @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)
            ),
        });
    }
  1. 請求 dto
export class GetListAdminReqDto extends PaginatedReqDto {
    constructor(filter: GetListAdminReqFilter, pagination: PaginatedReqDto) {
        super();
        this.filter = filter;
        this.pagination = pagination.pagination;
        this.page = pagination.page;
    }
    filter?: GetListAdminReqFilter;
}
  1. 分頁要求
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;
}
  1. 過濾器
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'
}

為什么paginationpage屬性也包含在filter中?,我不明白發生了什么,任何幫助將不勝感激

我的猜測是@Query() filter: GetListAdminReqFilter正在接收pagepagination屬性,因為您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM