es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La función IntersectionType no funciona con class-transformer.

Supongamos que tenemos una clase interseccionada siguiente:

export class PagingDto {
  @IsInt()
  @Type(() => Number)
  @ApiProperty()
  limit: number;

@IsInt()
  @Type(() => Number)
  @ApiProperty()
  offset: number;
}

export class UserDto {
  @IsString()
  @ApiProperty()
  name: string;
}

export class UserWithPagingDto extends IntersectionType(
  PagingDto,
  UserDto,
) {}

Cuando intenté usarlo con @Query(), Nestjs no transforma correctamente el valor de string de limit & offset a number como se pretendía…

// ----- en UserController
@Get()
  find(@Query() dto: UserWithPagingDto) {
    console.log(dto)
    // output: { limit: '10', offset: '1', name: 'foo' }
    // limit & offset deberían ser números...
  }

// ----- en main.ts, esta configuración está definida para habilitar la validación con transform
app.useGlobalPipes(
    new ValidationPipe({ transform: true }),
  );

Si simplemente pongo todo lo escrito en PagingDto en UserWithPagingDto, funciona bien.

¿Esto significa que Nest no admite class-transformer con IntersectionType o hay alguna solución alternativa?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece ser que NestJS no soporta actualmente la clase transformadora con IntersectionType. Como solución alternativa, podría intentar insertar todas las propiedades de PagingDto en UserWithPagingDto para ver si funciona.

Comments are closed.