关于数据库的nestjs文档解释了如何使用typeorm和定义实体连接到mysql。在我的例子中,我必须连接到一个具有多个数据库的mysql服务器,并且我需要直接执行sql查询(不使用实体层)并获取它们的结果。有时我还需要运行跨数据库查询。如何使用nestjs实现这一点?
xqkwcwgp1#
您可以通过给定不同名称的连接来导入多个数据库。您可以直接以单独的方式传递数据库配置 TypeOrmModule.forRoot({...}) 导入或使用 ormconfig.json 配置文件(然而 ormconfig.json 文件可能仍然无法与多个数据库一起使用,请参见此线程。)
TypeOrmModule.forRoot({...})
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。
connection
@InjectConnection('albumsConnection'): Connection
QueryBuilder
query
const rawData = await connection.query(`SELECT * FROM USERS`);
1条答案
按热度按时间xqkwcwgp1#
您可以通过给定不同名称的连接来导入多个数据库。您可以直接以单独的方式传递数据库配置
TypeOrmModule.forRoot({...})
导入或使用ormconfig.json
配置文件(然而ormconfig.json
文件可能仍然无法与多个数据库一起使用,请参见此线程。)正如kamil在注解中所述,您可以注入typeorm
connection
对象@InjectConnection('albumsConnection'): Connection
然后使用QueryBuilder
或者方法query
运行原始sql。