[英]DRY principles in NestJS entities with typeorm and class-validator
有没有办法把这个代码
export class person {
@IsString()
@Column('text')
name: string
@IsOptional()
@IsString()
@Column('text')
description?: string
}
变成类似这个的东西
export class person {
name: string
description?: string
}
我知道需要装饰器,但是当每个属性必须声明属性类型三次或更多时,SSOT似乎丢失了。
有没有更简单的方法可以解决此问题? JOI? 模式生成?
如果您发现自己一遍又一遍地在属性上使用同一组Decorator,则可以创建一个将它们组合在一起的新Decorator。
const CombinedDecorator = (target, property, descriptor) => {
IsOptional(target, property, descriptor);
IsString(target, property, descriptor);
Column('text')(target, property, descriptor);
}
class Person {
@CombinedDecorator()
name: string;
}
您可以提出一些涵盖您常用用例的方法,也可以考虑将其转换成Decorator Factory,该Decorator Factory可以接受config对象,并可以选择基于参数应用装饰器。
我认为,与装饰器进行一点重复比使用JOI之类的方法更可取,因为您仍然必须明确声明所有规则,但要与实际模型分开,以允许多个事实来源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.