我正在使用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 in modelCreate,该字段是一个对象,可以具有多个属性&在db中可以这样:
validation: {
required: true,
text: 2
}或者看起来是这样的:
validation: {
required: false,
number: 1,
maxNumber: 10
}这将取决于类型属性的modelCreate,因为如果类型是'TIME',我希望对此进行验证:
BaseValidation {
@IsBoolean()
required: true,
@IsString()
text: 2
}如果类型是“数字”,我想要这样的验证
BaseValidation {
@IsBoolean()
required: boolean,
@IsNumber()
number: number,
@IsNumber()
maxNumber: number
}因此,问题是如何根据类验证器中的类型字段值在验证字段中对不同的类进行切换,这可能吗?
发布于 2020-04-08 05:47:11
为此,您需要为每种情况创建两个类,字符串和数字。然后更改validation: StringBaseValidation | NumberBaseValidation;的类型,类验证器可以区分这些情况。
如果数据来自请求,则需要使用@Type((obj) => obj.writeConditionToDetectString ? StringBaseValidation : NumberBaseValidation)来帮助库了解哪种类型是来自请求的数据。
https://stackoverflow.com/questions/60891452
复制相似问题