I use: @UsePipes(new ValidationPipe({ transform: true })) to transform query param criteria to specific types, but it doesn't work for numbers, can you explain me why?
Version of @bx/nestjs-commons - 9.4.0.
Not working version:
@Get()
@UsePipes(new ValidationPipe({ transform: true }))
@ApiPageableParams()
@ApiPagedResponse(DeliveryReadModel)
@ApiCriteriaParams(new DeliveryListCriteria().criteriaMapping)
async getDelivery(
@AuthUser() userDetails: UserDetails,
@Query() criteria: DeliveryListCriteria,
@Query() pageable: Pageable
): Promise<PagedModel<DeliveryReadModel>> {
return this.deliveryService.get(
criteria,
pageable
);
}
export class DeliveryListCriteria {
mode: number[];
calculatedLength?: number;
}
Working version:
@Get()
@UsePipes(
new ValidationPipe({
transform: true,
transformOptions: {
enableImplicitConversion: true,
},
})
)
@ApiPageableParams()
@ApiPagedResponse(DeliveryReadModel)
@ApiCriteriaParams(new DeliveryListCriteria().criteriaMapping)
async getDelivery(
@AuthUser() userDetails: UserDetails,
@Query() criteria: DeliveryListCriteria,
@Query() pageable: Pageable
): Promise<PagedModel<DeliveryReadModel>> {
return this.deliveryService.get(
criteria,
pageable
);
}
export class DeliveryListCriteria {
@ApiProperty({
type: [Number],
})
@IsOptional()
@Type(() => Number)
mode: number[];
@ApiProperty({
format: 'float',
})
calculatedLength?: number;
}