2 个独立服务器中实体与 Typeorm 之间的关系

问题描述

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

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

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

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

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

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

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

我认为最好的办法是定义一个 Vat 接口并将其链接到产品中,但我不知道如何去做。

您有什么建议吗?

您的帮助将不胜感激。

最好的问候。

解决方法

你是对的,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
}