【问题标题】:Relation between entities in 2 separate server with Typeorm2个独立服务器中的实体与Typeorm之间的关系
【发布时间】:2021-04-07 21:15:17
【问题描述】:

我有一个关于 typeorm 关系的问题。

假设我在数据库 A 中有一个产品实体链接到数据库 B 中的增值税实体。 这两个数据库位于不同的服务器中。

目的是从 graphql 端点获取数据。

我首先尝试在产品中定义一个 vatId 以及与一个增值税类的关系。我的目标是使用另一个连接从解析器中的 db B 获取增值税并将其链接到产品。

问题是两种Vat类型不对应,我在Typescript中有类型问题。

我认为我们无法链接来自不同连接的 2 个实体,因为在尝试生成迁移时,TypeOrm 找不到另一个实体。

可以将实体链接到另一个数据库,但不能链接到另一个连接。

我认为最好的做法是定义一个增值税接口并将其链接到产品中,但我不知道该怎么做。

你有什么建议吗?

您的帮助将不胜感激。

最好的问候。

【问题讨论】:

    标签: database typeorm relation


    【解决方案1】:

    你说得对,TypeORM 允许建立不同的 DB 连接,但无法链接实体,因为它不知道从哪个连接获取它们(目前只有 @Entity({ database: "DBNAME" }) 支持)。

    最好的方法是建立接口并通过实体的构造函数传递vat。

    例如:

    @Entity()
    export class Product {
    
    vat?: VatInterface
    
    constructor(vat: VatInterface) {
      this.vat = vat
     }
    }
    

    分别:

    @Entity()
    export class Vat implements VatInterface {
    // specify all entity fields here and in interface for Product entity to use
    }
    

    【讨论】:

    • 感谢您的回复。我已经实现了解决方案,似乎没有必要继承接口。您可以只使用 vatId 属性并在获取产品时使用 @AfterLoad 事件来加载 vat。
    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 2013-01-10
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多