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`);