在nestjs中使用类验证器验证可选参数?
Posted
技术标签:
【中文标题】在nestjs中使用类验证器验证可选参数?【英文标题】:Validation on optional Parameter using class-validator in nestjs? 【发布时间】:2019-08-29 12:07:30 【问题描述】:我想对请求有效负载应用验证,例如,有字符串类型的字段名称。但name不是必填字段,但如果存在则必须执行@IsNotEmpty()
我尝试过这样的事情
@IsNotEmpty() name?: string
// 不考虑 ?
可选约束
【问题讨论】:
【参考方案1】:class-validator 有一个 @IsOptional()
验证器,您可以将其与您定义的任何其他验证器一起添加:
@IsOptional() @IsNotEmpty() name: string;
装饰器是可交换的,因此验证不依赖于验证器的顺序。如果验证的需要取决于存在以外的其他因素,您可以使用@ValidateIf()
,它接受一个函数参数。
【讨论】:
【参考方案2】:Kim 的回答很棒。如果您想将此行为应用于所有可选字段,您还可以将skipMissingProperties: true
与您的验证管道一起使用。
【讨论】:
你能举个例子说明在哪里放置这个属性?谢谢【参考方案3】:您可以使用@IsOptional()
验证器:
检查给定值是否为空(
=== null
、=== undefined
),如果是,则忽略该属性上的所有验证器。
【讨论】:
以上是关于在nestjs中使用类验证器验证可选参数?的主要内容,如果未能解决你的问题,请参考以下文章