在NestJS实体DRY原则与typeorm和类验证

问题描述 投票:2回答:1

有没有办法把这个代码

export class person {
  @IsString()
  @Column('text')
  name: string

  @IsOptional()
  @IsString()
  @Column('text')
  description?: string
}

到的东西,类似于此

export class person {
  name: string
  description?: string
}

我知道,是需要装修,但似乎SSOT丢失物业类型必须申报财产每三次或更多次。

有没有解决这个更简单的方法? JOI?架构生成?

nestjs typeorm
1个回答
4
投票

如果你发现自己使用相同的一组装饰的一遍又一遍的属性,你可以创建一个新的装饰,只是组成在一起。

const CombinedDecorator = (target, property, descriptor) => {
   IsOptional(target, property, descriptor);
   IsString(target, property, descriptor);
   Column('text')(target, property, descriptor);
}

class Person {
   @CombinedDecorator()
   name: string;
}

你既可以拿出其中的几个,涵盖您共同使用情况或考虑把它变成一个装饰厂,它接受一个配置对象,并可选地应用基于存在params装饰。

我认为,即使有装饰重复一点点更优选地将使用类似JOI因为你仍然必须明确说明所有的规则,但是从实际的模型分开的地方,让真理的多种来源。

© www.soinside.com 2019 - 2024. All rights reserved.