NestJS + MySQL: как подключиться к нескольким базам данных без установки сущностей

Документация NestJS о базах данных объясняет, как подключиться к MySQL с помощью TypeORM и определения сущностей.

В моем случае мне нужно подключиться к серверу MySQL, который имеет более одной базы данных, и мне нужно напрямую выполнять запросы SQL (без использования слоя Entity) и извлекать их результаты. Иногда мне также нужно запускать запросы между базами данных.

Как это сделать с помощью NestJS?

1 ответ

Вы можете импортировать несколько баз данных, используя разные имена соединений. Вы можете либо напрямую передать конфигурацию базы данных в отдельный TypeOrmModule.forRoot({...}) импортировать или использовать ormconfig.json Конфигурационный файл (Тем не менее ormconfig.json файл может все еще не работать с несколькими базами данных, см. эту ветку.)

TypeOrmModule.forRoot({
  ...defaultOptions,
  name: 'personsConnection',
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  host:  'person_db_host',
  entities: [Person],
}),
TypeOrmModule.forRoot({
  ...defaultOptions,
  name: 'albumsConnection',
  ^^^^^^^^^^^^^^^^^^^^^^^^^
  host:  'album_db_host',
  // You can also leave the entities empty
  entities: [],
})

Как заявил Камиль в комментариях, вы можете ввести TypeORM connection объект с @InjectConnection('albumsConnection'): Connection а затем использовать QueryBuilder или метод query запустить сырой SQL.

const rawData = await connection.query(`SELECT * FROM USERS`);
Другие вопросы по тегам