NestJS 关于数据库的文档解释了如何使用 TypeORM 连接到 MySQL 并定义实体。
就我而言,我必须连接到具有多个数据库的 MySQL 服务器,并且我需要直接执行 SQL 查询(不使用实体层)并获取它们的结果。有时我还需要运行跨数据库查询。
如何使用NestJS做到这一点?
NestJS 关于数据库的文档解释了如何使用 TypeORM 连接到 MySQL 并定义实体。
就我而言,我必须连接到具有多个数据库的 MySQL 服务器,并且我需要直接执行 SQL 查询(不使用实体层)并获取它们的结果。有时我还需要运行跨数据库查询。
如何使用NestJS做到这一点?
您可以通过给定连接不同的名称来导入多个数据库。您可以直接在单独的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 在评论中所述,您可以注入 TypeORMconnection
对象, @InjectConnection('albumsConnection'): Connection
然后使用QueryBuilder
or 方法query
运行原始 SQL。
const rawData = await connection.query(`SELECT * FROM USERS`);