1

我正在尝试使用类验证器有条件地验证嵌套 DTO,但 @ValidateIf 似乎没有正确应用并且始终验证嵌套类。

我有以下 DTO:

export class SuperAdminStoreDto extends StoreDto {

    @IsOptional()
    @IsBoolean()
    readonly payments: boolean;

    @ValidateIf(object => object.payments)
    @ValidateNested({ each: true })
    @Type(() => PaymentDetails)
    readonly payment_details: PaymentDetails[];
}

class PaymentDetails {

    @IsNumberString()
    @IsNotEmpty()
    readonly min: string;

    @IsNumberString()
    @IsNotEmpty()
    readonly max: string;

    @IsNumberString()
    @IsNotEmpty()
    readonly percentage: string;
}

假设正在验证的对象是:

{
    "payments": false,
    "payment_details": {
        "min": "1"
    }
}

虽然我应该没有错误,但我没有收到任何错误,因为我已经使用以下标志设置了验证器:

{
  whitelist: true,
  forbidNonWhitelisted: true,
  forbidUnknownValues: true,
  validationError: {
   target: false,
  }
}

我期望验证器不允许子对象存在并引发错误。

4

0 回答 0