5

我使用ValidationPipe{ transform: true, whitelist: true }选项的全局变量。但是,在特定的控制器请求中,我想重用相同的类但具有不同的验证,应用类验证器的验证组技术。因此,我有必要覆盖管道的选项以应用新选项。

这是在 NestJS 6.2.4 上。我已尝试在 应用新管道@Query(new ValidationPipe({groups: ['res']})),但仍应用全局管道。我已经应用了相同的逻辑,@UsePipes()但再次应用了全局管道。

此外,我尝试将always: false属性与组一起应用,以避免始终验证属性,但由于这是默认行为,它并没有太大帮助。

@IsNumberString({ groups: ['res'] })
resId: number;
4

1 回答 1

-1

在这种情况下,我建议在控制器ValidationPipe中的方法级别添加,而不是在控制器级别。

像这样的东西:

@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);
    }
}

其他人可能会添加其他建议。

于 2019-05-31T11:49:03.847 回答