Я работаю с TypeORM, и я хотел бы предоставить другое поле на основе другого значения поля. Чтобы объяснить, вот как выглядит моя модель DTO:
import { IsString, IsOptional, IsNumber, IsEnum, IsObject, IsBoolean, ValidateNested } from 'class-validator';
export enum AttributeTypes {
DATE = 'DATE',
TIME = 'TIME',
NUMBERS = 'NUMBERS',
}
export class BaseValidation {
@IsOptional()
@IsBoolean()
required: boolean;
}
export class modelCreate {
@IsOptional()
@IsNumber()
id: number;
@IsOptional()
@IsString()
label: string;
@IsOptional()
@IsEnum(AttributeTypes)
type: AttributeTypes;
@IsOptional()
@IsObject()
@ValidateNested()
validation: BaseValidation;
}
Проблема здесь в том, что у меня есть это поле: validation в modelCreate, и это поле является объектом и может иметь несколько свойств и может выглядеть так в db:
validation: {
required: true,
text: 2
}
или может выглядеть так:
validation: {
required: false,
number: 1,
maxNumber: 10
}
, и это будет зависеть от свойства type modelCreate , потому что если типом является «ВРЕМЯ», я хотел бы иметь проверку для этого:
BaseValidation {
@IsBoolean()
required: true,
@IsString()
text: 2
}
, а если типом является «НОМЕРЫ», я хотел бы иметь проверку как это
BaseValidation {
@IsBoolean()
required: boolean,
@IsNumber()
number: number,
@IsNumber()
maxNumber: number
}
Итак, вопрос в том, как бы я мог переключать разные классы в поле валидации на основе значения поля типа в валидаторе класса, и это вообще возможно?