クラスバリデーターでネストされた 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,
}
}
バリデーターが子オブジェクトの存在を許可せず、エラーをスローすることを期待しています。