我试图弄清楚如何在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
}