首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型记录-类验证器-基于不同类型的验证

类型记录-类验证器-基于不同类型的验证
EN

Stack Overflow用户
提问于 2020-03-27 17:47:27
回答 1查看 5K关注 0票数 2

我正在使用TypeORM,我希望根据其他字段值提供不同的字段。为了解释一下,下面是我的DTO模型的样子:

代码语言:javascript
运行
复制
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中可以这样:

代码语言:javascript
运行
复制
validation: {
   required: true,
   text: 2
}

或者看起来是这样的:

代码语言:javascript
运行
复制
   validation: {
       required: false,
       number: 1,
       maxNumber: 10
    }

这将取决于类型属性的modelCreate,因为如果类型是'TIME',我希望对此进行验证:

代码语言:javascript
运行
复制
BaseValidation {
    @IsBoolean()
     required: true,
    @IsString()
    text: 2
}

如果类型是“数字”,我想要这样的验证

代码语言:javascript
运行
复制
  BaseValidation {
           @IsBoolean()
           required: boolean,
           @IsNumber()
           number: number,
           @IsNumber()
           maxNumber: number
        }

因此,问题是如何根据类验证器中的类型字段值在验证字段中对不同的类进行切换,这可能吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-08 05:47:11

为此,您需要为每种情况创建两个类,字符串和数字。然后更改validation: StringBaseValidation | NumberBaseValidation;的类型,类验证器可以区分这些情况。

如果数据来自请求,则需要使用@Type((obj) => obj.writeConditionToDetectString ? StringBaseValidation : NumberBaseValidation)来帮助库了解哪种类型是来自请求的数据。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60891452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档