РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsPmDbCC 121 of 168 menu
◀ ▶

Проверка соединения в Nest

Пусть модуль базы подключён, но по адресу страницы не видно, удалось ли открыть соединение. Удобно спросить об этом у самого драйвера при запросе.

TypeORM создаёт объект DataSource и регистрирует его в контейнере Nest. Его внедряют в контроллер так же, как сервис. Свойство isInitialized показывает, что пул соединений готов к запросам.

TypeOrmModule с методом forRoot должен стоять в том же корневом модуле, где объявлен контроллер, иначе DataSource не попадёт в конструктор.

Покажем на примере постов:

import { Controller, Get } from '@nestjs/common'; import { DataSource } from 'typeorm'; @Controller() export class PostController { constructor(private dataSource: DataSource) {} @Get('db-check') checkDb(): string { if (this.dataSource.isInitialized) { return 'Database is connected'; } return 'Database is not connected'; } }

Зарегистрируем контроллер и оставим подключение базы с выключенной синхронизацией схемы:

import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { PostController } from './post.controller.js'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'postgres', password: 'postgres', database: 'site', autoLoadEntities: true, synchronize: false, }), ], controllers: [PostController], }) export class AppModule {}

Сделайте в контроллере WorkerController страницу, которая сообщает, открыто ли соединение с базой. Подключите модуль базы в корне проекта работников.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить