使用 nestjs 中的类验证器验证可选参数?

Rev*_*ddh 11 javascript validation node.js class-validator nestjs

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

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

Kim*_*ern 24

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

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


ron*_*ron 9

您可以使用@ValidateIf条件验证,如果函数返回,这将运行其他验证true

example:在这种情况下,如果o.otherProperty === 'value'euqaltrue则将@IsNotEmpty运行,否则将不会运行

export class Post {
  otherProperty: string;

  @ValidateIf(o => o.otherProperty === 'value')
  @IsNotEmpty()
  example: string;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

class-validator有一个@IsOptional()验证器,您可以将它与您定义的任何其他验证器一起添加,如下所示:

@IsOptional() @IsNotEmpty() name: string;
Run Code Online (Sandbox Code Playgroud)

装饰器是可交换的,因此验证不依赖于验证器的顺序。如果需要验证取决于存在以外的其他东西,您可以使用@ValidateIf()which 接受函数参数。