gpt4 book ai didi

nestjs - 具有 typeorm 和类验证器的 NestJS 实体中的 DRY 原则

转载 作者:行者123 更新时间:2023-12-01 11:14:27 25 4
gpt4 key购买 nike

有没有办法把这段代码转过来

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

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

变成类似这样的东西

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

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

有没有更简单的方法来解决这个问题?乔伊?架构生成?

最佳答案

如果您发现自己在属性上反复使用同一组装饰器,您可以创建一个将它们组合在一起的新装饰器。

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

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

您可以想出其中的一些来涵盖您的常见用例,或者考虑将其转变为一个装饰器工厂,该工厂接收配置对象并根据参数选择应用装饰器。

我认为,与使用 JOI 之类的东西相比,即使使用装饰器进行一点点重复也更可取,因为您仍然必须明确说明所有规则,但要在与实际模型分开的地方进行,这允许多个真实来源.

关于nestjs - 具有 typeorm 和类验证器的 NestJS 实体中的 DRY 原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54507039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com