Ya no busques más por otros sitios porque estás al sitio exacto, contamos con la respuesta que quieres encontrar pero sin problema.
Solución:
Acabo de intentar configurar TypeORM con múltiples bases de datos y un ormconfig.json
y no me funcionó para nada. Parecía usar siempre el default
conexión y cuando no se encontró una conexión predeterminada (= sin nombre explícito), arrojó el error correspondiente.
Sin embargo, funcionó cuando definí las conexiones en el app.module.ts
en cambio (he quitado ormconfig.json
):
imports: [
...,
TypeOrmModule.forRoot(
name: 'Project1',
type: 'mysql',
host: 'localhost',
port: 3306,
username: '',
password: '',
database: '',
synchronize: false,
entities: ['project1/*.entity.ts'],
subscribers: ['project1/*.subscriber.ts'],
migrations: ['project1/migrations/*.ts'],
cli: migrationsDir: 'project1/migrations' ,
),
TypeOrmModule.forRoot(
name: 'project2',
type: 'mysql',
host: 'localhost',
port: 3306,
username: '',
password: '',
database: '',
synchronize: false,
entities: ['project2/*.entity.ts'],
subscribers: ['project2/*.subscriber.ts'],
migrations: ['project2/migrations/*.ts'],
cli: migrationsDir: 'project2/migrations' ,
)
]
Debe pasar explícitamente el nombre de la conexión al mismo nivel dentro TypeOrmModule.forRoot( nombre: ‘db1Connection’ ) en caso de que esté utilizando varias conexiones de base de datos.
TypeOrmModule.forRootAsync(
name: DB1_CONNECTION,
imports: [ConfigModule],
useClass: TypeormDb1ConfigService,
),
TypeOrmModule.forRootAsync(
name: DB2_CONNECTION,
imports: [ConfigModule],
useClass: TypeormDb2ConfigService,
)
Para mayor claridad y para que otros desarrolladores vengan a esta publicación:
De la documentación de NestJS:
Si no establece ningún nombre para una conexión, su nombre se establece como predeterminado. Tenga en cuenta que no debe tener varias conexiones sin un nombre o con el mismo nombre, de lo contrario, simplemente se anularán.
Una de sus conexiones debe tener uno de los siguientes:
"name":"default"
- Sin ningún nombre.
Recomendaría declarar todas sus conexiones en ormconfig.json
y no declararlo en código.
Un ejemplo para importar las conexiones desde ormconfig.json
:
@Module(
imports: [TypeOrmModule.forFeature([Entity1, Entity2]), //This will use default connection
TypeOrmModule.forRoot(name: 'con1'), // This will register globaly con1
TypeOrmModule.forRoot(name: 'con2'), // This will register globaly con2
controllers: [...],
providers: [...],
exports: [...]
)
en su módulo (no tiene que ser el módulo raíz, solo los módulos necesitarán las conexiones).
Calificaciones y reseñas
Recuerda dar visibilidad a esta sección si te fue útil.