TypeORM中connection name已弃用,NestJS多数据库连接受限咨询
NestJS + TypeORM 0.3.x 多数据库连接适配方案
TypeORM 0.3.x版本引入了核心架构变更:废弃了原有的connection name配置,改用DataSource作为连接管理的核心对象,这是从传统"连接"模型转向"数据源"模型的关键更新,也是你遇到单连接限制提示的原因。
多数据库连接的新实现步骤
定义多数据源配置
为每个数据库单独配置DataSourceOptions:// db1.config.ts export const db1Config = { type: 'postgres', host: 'localhost', port: 5432, username: 'user1', password: 'pass1', database: 'db1', entities: [__dirname + '/entities/db1/**/*.entity{.ts,.js}'], synchronize: false, }; // db2.config.ts export const db2Config = { type: 'mysql', host: 'localhost', port: 3306, username: 'user2', password: 'pass2', database: 'db2', entities: [__dirname + '/entities/db2/**/*.entity{.ts,.js}'], synchronize: false, };注册多数据源到NestJS
在模块中通过TypeOrmModule.forRootAsync注册每个数据源,用自定义名称标识(替代原connection name):// db.module.ts import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { db1Config } from './db1.config'; import { db2Config } from './db2.config'; @Module({ imports: [ TypeOrmModule.forRootAsync({ name: 'DB1_SOURCE', useFactory: () => db1Config, }), TypeOrmModule.forRootAsync({ name: 'DB2_SOURCE', useFactory: () => db2Config, }), ], }) export class DbModule {}在业务模块中指定数据源
使用TypeOrmModule.forFeature关联实体与对应数据源,注入Repository时指定数据源名称:// user.module.ts import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { User } from './entities/user.entity'; import { UserService } from './user.service'; @Module({ imports: [TypeOrmModule.forFeature([User], 'DB1_SOURCE')], providers: [UserService], }) export class UserModule {}服务中注入:
import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { User } from './entities/user.entity'; @Injectable() export class UserService { constructor( @InjectRepository(User, 'DB1_SOURCE') private readonly userRepo: Repository<User>, ) {} // 业务逻辑示例 async getUsers() { return this.userRepo.find(); } }
核心变更点
- TypeORM 0.3.x移除了
Connection类,所有连接操作基于DataSource - NestJS的
@nestjs/typeorm已适配该变更,但官方文档更新滞后,上述为当前标准多连接实现方式
内容的提问来源于stack exchange,提问作者Aditya_Anand
相关产品推荐
相关产品推荐

