nestjs+mysql:如何连接多个数据库而不设置实体

gcmastyq  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(738)

关于数据库的nestjs文档解释了如何使用typeorm和定义实体连接到mysql。
在我的例子中,我必须连接到一个具有多个数据库的mysql服务器,并且我需要直接执行sql查询(不使用实体层)并获取它们的结果。有时我还需要运行跨数据库查询。
如何使用nestjs实现这一点?

xqkwcwgp

xqkwcwgp1#

您可以通过给定不同名称的连接来导入多个数据库。您可以直接以单独的方式传递数据库配置 TypeOrmModule.forRoot({...}) 导入或使用 ormconfig.json 配置文件(然而 ormconfig.json 文件可能仍然无法与多个数据库一起使用,请参见此线程。)

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在注解中所述,您可以注入typeorm connection 对象 @InjectConnection('albumsConnection'): Connection 然后使用 QueryBuilder 或者方法 query 运行原始sql。

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

相关问题