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