#mongodb #mongoose #nestjs
#mongodb #мангуст #гнездышко
Вопрос:
Я разрабатываю небольшой микросервис NestJS и хочу, чтобы он вышел из строя при запуске, если соединение с базой данных не может быть установлено.
В файле app.module.ts модуль MongooseModule создается асинхронно. Модуль сохранения импортирует модуль Мангуст синхронно.
Когда я запускаю приложение без какой-либо доступной базы данных, все просто запускается, и через некоторое время клиент получает тайм-аут. Предпочтительным поведением было бы то, что приложение завершает работу после того, как не удалось установить соединение.
Асинхронная инициализация, возможно, не является правильным выбором для быстрого подхода, но я не могу найти альтернативу для создания конфигурации.
приложение.модуль.ts
const env = process.env.NODE_ENV @Module({ imports: [ ConfigModule.forRoot({ envFilePath: env === 'production' ? 'env/.env.prod' : 'env/.env', }), PersistenceModule, MongooseModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (configServig: ConfigService) =gt; ({ uri: configServig.get('DB_URL'), dbName: configServig.get('DB_NAME'), user: configServig.get('DB_USER'), pass: configServig.get('DB_PASSWORD'), }), }), ], controllers: [AppController, CarController], providers: [AppService], }) export class AppModule {}
постоянство.модуль.ts
@Module({ imports: [ MongooseModule.forFeature([ { name: Car.name, schema: CarSchema, }, ]), ], providers: [CarRepository], exports: [CarRepository], }) export class PersistenceModule {}