在 nestjs 中使用 class-validator 对可选参数进行验证?

Validation on optional Parameter using class-validator in nestjs?

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

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

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

Checks if given value is empty (=== null, === undefined) and if so, ignores all the validators on the property.

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

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

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

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