TypeOrmModule 通过添加具有不同连接名称的多个模块来提供多个数据库连接处理。
注意:name 属性很重要
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
name: 'Connection1', // this is what will be used
host: 'localhost',
port: 3306,
username: 'root',
password: 'root',
database: 'database1',
}),
TypeOrmModule.forRoot({
type: 'postgres',
name: 'Connection2',
host: 'localhost',
port: 3306,
username: 'root',
password: 'root',
database: 'database2',
}),
],
controllers: [AppController],
providers: [
],
})
export class AppModule {}
现在在您的 UserModule 中
// same entity can be used on different connections or if you want you can use different
@Module({
imports: [
TypeOrmModule.forFeature([UserEntity], 'Connection1'),
TypeOrmModule.forFeature([UserEntity], 'Connection2'),
],
providers: [UserService]
})
在用户服务中
@Injectable()
class UserService {
constructor (
@InjectRepository(UserEntity, 'Connection1') private userCon1Repo: Repository<UserEntity>,
@InjectRepository(UserEntity, 'Connection2') private userCon2Repo: Repository<UserEntity>,
}
主要内容是,如果您想维护多个连接,则必须在 forRoot 或 forRootAsyn 中配置连接时为连接命名,并且在注入实体时,您需要在第二个参数中提供连接名称。
我认为未提供时的名称是默认。
Sequelize 也是如此。