我使用带有ValidationPipe
选项的全局{ transform: true, whitelist: true }
。但是,在特定的控制器请求中,我想使用类验证器的验证组技术来重用相同的类,但使用不同的验证。因此,有必要重写管道的选项以应用新选项。
这是在NestJS 6.2.4上。我尝试在@Query(new ValidationPipe({groups: ['res']}))
应用新管道,但是全局管道仍然适用。我对@UsePipes()
应用了相同的逻辑,但是再次应用了全局管道。
此外,我尝试将always: false
属性与组一起应用,以避免始终验证该属性,但是由于这是默认行为,因此并没有太大帮助。
@IsNumberString({ groups: ['res'] })
resId: number;
答案 0 :(得分:0)
In this case, what I would recommend is to add the ValidationPipe
at the method level within your controller, instead of at the controller level.
Something like this:
@Controller('users')
export class UsersController {
constructor(
private readonly usersService: UsersService
) {
}
@Post()
@UsePipes(new ValidationPipe({
forbidUnknownValues: true,
transform: true
}))
async create(@Body() createUserDtoReq: CreateUserRequestDto): Promise<UserResponseDto> {
return await this.usersService.create(createUserDtoReq);
}
}
Others might add other suggestions though.