是否有一种方法来有条件地验证类验证器?



我正在为使用Nest.js的用户构建一个CRUD
我想让POST和PATCH接收相同的DTO,但在PATCH中有一些可选字段,但在POST中是强制性的。

我找不到一种方法来做到这一点,除了保持所有属性@IsOptional,并手动在代码中为POST请求编写验证

是否有更好的方法使用类验证器?

NestJS为你的问题提供了一个漂亮的解决方案,

您可以使用PartialType创建具有相同字段的类型,但每个字段都是可选的,使用PartialType()将类引用(PsotDto)作为参数:

export class PatchDto extends PartialType(PostDto) {}

你可以尝试@ValidateIf条件验证

如果ValidateIf返回true,则其他验证将运行

示例:在这种情况下,如果o.otherProperty === 'value',那么@IsNotEmpty将运行,否则它将不运行

export class Post {
otherProperty: string;
@ValidateIf(o => o.otherProperty === 'value')
@IsNotEmpty()
example: string;
}

您可以使用Custom validation classes,因为nestjs使用了它,所以你也可以创建它。

相关内容

  • 没有找到相关文章

最新更新