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

我有一个带有类验证器装饰器的DTO,其行为符合预期 . 但是,我想利用'skipMissingProperties'来忽略对那些不存在的东西的验证(例如截图中的'name') .

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

不幸的是,我对skipMissingProperties的使用似乎不正确,因为提供此选项仍然会在DTO内引发验证错误 .

How do I use the validation-pipe skipMissingProperties option along with class-validator decorators for the ones that do get passed in?

使用以下代码,如果我使用其他参数发出更新请求但从正文中排除“name”,则类验证程序会从DTO级别引发错误 .

Validation Pipe on Controller Screenshot

UpdateViewDTO's decorators Screenshot

API控制器 endpoints :

@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    

       }

UpdateViewDTO:

export class UpdateViewDto {
    @IsString()
    @MinLength(1, {
        message: LanguageElements.VIEW_NAME_REQUIRED_ERROR_MSG,
    })
    @MaxLength(50, {
        message: LanguageElements.VIEW_NAME_TOO_LONG_ERROR_MSG,
    })
    public readonly name?: string;

    // Other properties 
}