具有typeorm和class-validator的NestJS实体中的DRY原理

时间:2019-02-03 20:05:30

标签: nestjs typeorm

有没有办法转换此代码

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

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

变成类似这个的东西

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

我知道需要装饰器,但是当每个属性必须声明三个或三个以上属性类型时,SSOT似乎丢失了。

有没有更简单的方法来解决这个问题? JOI?模式生成?

1 个答案:

答案 0 :(得分:4)

如果您发现自己一遍又一遍地使用同一组装饰器,则可以创建一个将它们组合在一起的新装饰器。

message = await pyscript.websocket.recv();

handle_response( json.loads( message ) );

您可以提出一些涵盖您常用用例的方法,也可以考虑将其转换成Decorator Factory,该Decorator Factory可以使用config对象并根据参数应用装饰器。

我认为与装饰器进行一点重复比使用JOI之类的方法更可取,因为您仍然必须明确声明所有规则,但要与实际模型分开放置,这需要多个真相来源