NestJS中,嵌入对象的validation不生效,数据类型字符串没有变成number?
NestJS embed/Nest object validation not working?
验证需要注意:
export class InnerDto {
@Type(() => Number)
@IsNumber()
@Transform(({value}) => parseInt(value))
innerCode: number;
}
export class OuterDto {
@ValidateNested()
@Type(() => InnerDto)
innerData: InnerDto;
}
必须同时添加 @ValidateNested和 @Type(() => InnerDto) 两行,嵌入对象的验证才会生效!
必须加了 @Transform(({value}) => parseInt(value)) ,才能把前端传递的字符串数字变成 Number 对象,否则前端只有传递 数字后端才会是数字,如果前端是字符串数字传递,那么后端也会是字符串!
如果@Transform不生效,则必须在 Controller 的方法上,添加如下注解:
@UsePipes (new ValidationPipe({ transform: true }))