我们可以在 TypeORM 中为来自不同数据库的表创建一个联合表吗?

问题描述

我正在尝试为来自不同 Postgresql 数据库的两个表创建一个联合表。使用 TypeORM,我在 TypeScript 中定义 @ManyToMany(() => 'TableFromAnotherDb') 时遇到问题。我已经创建了一个接口,它具有联合表所需的属性,但要记住该接口 - 在 ManyToMany 部分中分配它时它没有用,因为它指的是一种类型,我试图将它用作值.

另外,这里是否需要同时连接两个数据库?因为我试图屏蔽第二个数据库所需的表的接口。 在保持我的打字稿编译器满意的同时避免这个问题有什么建议吗?

解决方法

我非常怀疑 TypeORM 是否允许在这样的数据库之间进行链接。问题是大多数关系会自动生成 SQL 查询,这些查询会引入它需要操作的各种数据库表。如果您有两个数据库,一个 SQL 查询无法获得它需要的所有信息。因此,您的应用程序需要成为将它们粘合在一起的粘合剂。

我认为最好的方法是将 ID 存储在实体中,然后手动查询每个连接。

@Entity()
class Thing {
  @Column()
  otherThingId: number
}

// usage
const thing = await ThingRepository.find(123)
const otherThing = await OtherThingRepository.find(thing.otherThingId)