NestJS + MySQL:如何在不设置实体的情况下连接到多个数据库

时间:2018-12-18 14:29:45

标签: mysql sql typescript nestjs cross-database

NestJS documentation about Databases说明了如何使用TypeORM和定义实体连接到MySQL。

就我而言,我必须连接到具有多个数据库的MySQL服务器,并且需要直接执行SQL查询(不使用Entity层)并获取其结果。有时我还需要运行跨数据库查询

如何使用NestJS来做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以通过给连接指定其他名称来导入multiple databases。您可以直接在单独的TypeOrmModule.forRoot({...})导入中传递数据库配置,也可以使用ormconfig.json配置文件。 (但是,ormconfig.json文件可能仍不能用于多个数据库,请参阅此thread。)

TypeOrmModule.forRoot({
  ...defaultOptions,
  name: 'personsConnection',
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  host:  'person_db_host',
  entities: [Person],
}),
TypeOrmModule.forRoot({
  ...defaultOptions,
  name: 'albumsConnection',
  ^^^^^^^^^^^^^^^^^^^^^^^^^
  host:  'album_db_host',
  // You can also leave the entities empty
  entities: [],
})

如Kamil在评论中所述,您可以使用@InjectConnection('albumsConnection'): Connection注入TypeORM connection对象,然后使用QueryBuilder或方法query来运行原始SQL。

const rawData = await connection.query(`SELECT * FROM USERS`);