Гнездо. js TypeORM Как переключить соединение с базой данных во время выполнения в зависимости от заголовка - PullRequest
1 голос
/ 27 января 2020

У меня есть две базы данных, и я хочу использовать одну из них в зависимости от заголовка, который я отправляю с запросом http.

У кого-нибудь есть идеи, как я могу динамически переключать соединение TypeORM в Nest? Thx!

1 Ответ

0 голосов
/ 30 января 2020

Довольно просто использовать несколько баз данных с гнездом js. В официальной документации есть отличное объяснение их настройки https://docs.nestjs.com/techniques/database#multiple -базы данных

Сначала вы можете зарегистрировать свои базы данных в AppModule

const defaultOptions = {
  type: 'postgres',
  port: 5432,
  username: 'user',
  password: 'password',
  database: 'db',
  synchronize: true,
};

@Module({
  imports: [
    TypeOrmModule.forRoot({
      ...defaultOptions,
      name: 'db_1',
      host: 'host_1',
      entities: [Entity1],
    }),
    TypeOrmModule.forRoot({
      ...defaultOptions,
      name: 'db_2',
      host: 'host_2',
      entities: [Entity2],
    })
  ],
})
export class AppModule {}

С этим вы можете введите ваше соединение и выберите между ними

@Module({
  imports: [
    TypeOrmModule.forFeature([Entity1], 'db_1'),
    TypeOrmModule.forFeature([Entity2], 'db_2'),
  ],
})
export class AppModule {}
@Injectable()
export class PersonService {
  constructor(
    @InjectRepository('db_1')
    private readonly repo_1: Repository<Entity1>,
    @InjectRepository('db_2')
    private readonly repo_2: Repository<Entity2>,
  ) {}

  public fetchData(db_1: boolean) {
    if (db_1) {
      return this.repo_1.find();
    }
    return this.repo_2.find();
  }
}

...