我们如何覆盖NestJs中的全局验证管道?

时间:2019-06-13 15:13:16

标签: typescript nestjs class-validator

我有一个代码,其中在main.ts文件中应用了全局验证管道,如下所示:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.enableCors();
  // Enable global validation pipe
  app.useGlobalPipes(new ValidationPipe({
    whitelist: true
  }));
}

现在在我的一个控制器中,我想像这样的补丁请求中跳过DTO的某些属性

    @Patch(':id')
    // Override the pipes
    @UsePipes(new ValidationPipe({
        skipMissingProperties: true,
    }))
    updateProject(@Param('id') accountId: string, @Body() dataToUpdate: UpdateProjectDTO) {
        return dataToUpdate;
    }

这是我的DTO:

export class UpdateProjectDTO {
    @IsNotEmpty()
    projectType: string;

    @IsNotEmpty()
    projectDescription: string;
}

如果projectDescription没有作为请求的一部分提交,我想忽略它。但是在这种情况下,我的全局管道具有优先权,而其属性中没有定义skipMissingProperties。是否有解决方案来覆盖全局管道?

1 个答案:

答案 0 :(得分:0)

将您的装饰器从 @IsOptional() 更改为 @IsNotEmpty()