在NestJS中使用类验证器对可选参数进行验证?

时间:2019-04-08 10:53:12

标签: javascript node.js validation nestjs class-validator

我想对请求有效负载应用验证,例如,具有字符串类型的字段名称。但是名称不是必填字段,但如果存在,则必须执行@IsNotEmpty()

我尝试过这样的事情 @IsNotEmpty() name?: string //不考虑?可选约束

3 个答案:

答案 0 :(得分:1)

class-validator有一个@IsOptional()验证程序,您可以将其与定义的任何其他验证程序一起添加:

@IsOptional() @IsNotEmpty() name: string;

装饰器是可交换的,因此验证不依赖于验证器的顺序。如果验证的需要取决于状态以外的其他条件,则可以使用带有函数参数的@ValidateIf()

答案 1 :(得分:0)

您可以使用@IsOptional()验证程序:

  

检查给定值是否为空(=== null=== undefined),如果是,则忽略该属性上的所有验证器。

答案 2 :(得分:0)

金的答案很好。如果您想将此行为应用于所有可选字段,则还可以将skipMissingProperties: true与验证管道一起使用。