Typescript 与类验证器一起使用验证管道

Typescript 与类验证器一起使用验证管道,typescript,nestjs,class-validator,Typescript,Nestjs,Class Validator,我试图弄清楚如何在API调用中正确使用我的验证管道和类验证器 我有一个DTO和类验证器装饰器,它的行为符合预期。但是,我想利用“skipMissingProperties”来忽略对不存在的内容的验证(例如屏幕截图中的“名称”) 我的目的是能够有一个使用许多装饰器的简单DTO,并跳过那些不存在的验证 不幸的是,我对skipMissingProperties的使用似乎不正确,因为提供此选项仍然会从DTO中抛出验证错误 如何将validation pipe skipMissingProperties选

我试图弄清楚如何在API调用中正确使用我的验证管道和类验证器

我有一个DTO和类验证器装饰器,它的行为符合预期。但是,我想利用“skipMissingProperties”来忽略对不存在的内容的验证(例如屏幕截图中的“名称”)

我的目的是能够有一个使用许多装饰器的简单DTO,并跳过那些不存在的验证

不幸的是,我对skipMissingProperties的使用似乎不正确,因为提供此选项仍然会从DTO中抛出验证错误

如何将validation pipe skipMissingProperties选项与类验证器装饰器一起用于传入的类?

在下面的代码中,如果我使用其他参数发出更新请求,但从主体中排除“name”,则类验证器会从DTO级别抛出错误

API控制器终结点:

    @Put(':viewId')
    public async updateView(
        @Req() request: RequestExtended,
        @Param('viewId') viewId: string,
        @Body(new ValidationPipe({ skipMissingProperties: true })) updateView: UpdateViewDto)
        : Promise<View> {

        // Do some API stuff    

       }

main.ts
中,可以将
skipMissingProperties:true
直接添加到ValidationPipe中


  app.useGlobalPipes(
    new ValidationPipe({
      skipMissingProperties: true,
      exceptionFactory: (errors: ValidationError[]) => {
        return new BadRequestException(errors[0].constraints);
      },
    }),
  );

我复制了你的代码,它对我有效。是否可以包含put请求中的错误消息和正文?是否尝试在DTO中使用
@IsOptional()
装饰器?

  app.useGlobalPipes(
    new ValidationPipe({
      skipMissingProperties: true,
      exceptionFactory: (errors: ValidationError[]) => {
        return new BadRequestException(errors[0].constraints);
      },
    }),
  );