NestJS documentation about Databases说明了如何使用TypeORM和定义实体连接到MySQL。
就我而言,我必须连接到具有多个数据库的MySQL服务器,并且需要直接执行SQL查询(不使用Entity层)并获取其结果。有时我还需要运行跨数据库查询。
如何使用NestJS来做到这一点?
答案 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`);