typeorm 멀티 db

손승우·2023년 3월 29일
0

app.module

비동기

TypeOrmModule.forRootAsync({
        useFactory: DefaultDbConfig
      }),
      TypeOrmModule.forRootAsync({
        name: 'second_connection',
        useFactory: SecondDbConfig
      }),

db.config

import { TypeOrmModuleOptions } from '@nestjs/typeorm';

export const DefaultDbConfig = (): TypeOrmModuleOptions => ({
    type: 'mysql',
    host: process.env.DB1_HOST,
    port: Number(process.env.DB1_PORT),
    username: process.env.DB1_USERNAME,
    password: process.env.DB1_PASSWORD,
    database: process.env.DB1_DATABASE,
    autoLoadEntities: true,
    entities: [__dirname + '/**/*.entity.entity{.ts,.js}'],
    logging: process.env.NODE_ENV == 'example',
    synchronize: false,
    retryAttempts: 1,
})

export const SecondDbConfig = () : TypeOrmModuleOptions => ({
    type: 'mysql',
    host: process.env.DB1_HOST,
    port: Number(process.env.DB2_PORT),
    username: process.env.DB2_USERNAME,
    password: process.env.DB2_PASSWORD,
    database: process.env.DB2_DATABASE,
    autoLoadEntities: true,
    entities: [__dirname + '/**/*.entity.entity{.ts,.js}'],
    logging: process.env.NODE_ENV == 'example',
    synchronize: false,
    retryAttempts: 1,
})

example.module

@Module({
imports: [TypeOrmModule.forFeature(entities:[example],dataSource: 'second_connection')],
controllers: [ExampleController],
providers: [ExampleService]
})
export class ExampleModule {
}

example.service

constructor(
        @InjectRepository(Example, 'second_connection') private readonly exampleRepository: Repository<Example>,
      {
    }
profile
개구리

0개의 댓글