我正在尝试使用类验证器有条件地验证嵌套 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,
}
}
我期望验证器不允许子对象存在并引发错误。