NestJS class-validator是否能将传入对象转换为指定DTO实例的疑问
NestJS class-validator是否能将传入对象转换为指定DTO实例的疑问
嘿,各位大佬,我最近在做NestJS项目的时候碰到了个困惑,想跟大家请教下:
我先定义了这样一个UpdateUserDto:
export class UpdateUserDto { @IsEmail() email: string; @IsString() login: string; }
然后在控制器方法里,我用了ValidationPipe并开启了transform: true,还重写了Crud的updateOneBase方法:
@UsePipes(new ValidationPipe({ transform: true })) @Override('updateOneBase') async updateOneOverride( @ParsedRequest() req: CrudRequest, @Body() dto: UpdateUserDto, ) { console.log(dto); return this.service.updateOne(req, dto); }
现在我发送的请求体是:
{ "login": "...", "email": "...", "password": "123" }
我原本期望console.log(dto)能输出一个新的UpdateUserDto类实例,而且会自动过滤掉DTO里没定义的password字段,但实际打印出来的却是和请求体完全一样的对象——既不是DTO的实例,还保留了多余的password字段。
想问问大家,这是哪里出问题了?是不是我对transform选项的理解有误,还是需要额外配置什么才能让NestJS把请求体转换成DTO的实例呀?
备注:内容来源于stack exchange,提问作者Данияр Булдаков
相关产品推荐
相关产品推荐

