NestJS: Как получить экземпляр мангуста для проверки здоровья? - PullRequest
1 голос
/ 22 октября 2019

Я использую пакет @ nestjs / mongoose для подключения к БД Mongo. У меня есть это в app.module.ts:

imports: [
   MongooseModule.forRoot(process.env.MONGODB_URI, {
      useNewUrlParser: true,
      bufferCommands: false,
      bufferMaxEntries: 0,
      useCreateIndex: true,
      useFindAndModify: false,
      useUnifiedTopology: true
})]

Теперь служба NestJS работает в кластере Kubernetes с соответствующими проверками работоспособности, жизнеспособности и готовности. Всякий раз, когда в службе вызывается конечная точка готовности или работоспособности, мне нужно проверить, доступно ли соединение с базой данных Atlas Mongo DB или есть ли сбой. На данный момент следующий код выполняется для конечных точек готовности и работоспособности:

this.mongoDbConnection = await mongoose.connect(process.env.MONGODB_URI, options);
return (this.mongoDbConnection.connection.readyState === 1);

Но это создает новое соединение с сервером БД mongo. Я хочу получить готовое состояние существующего соединения, которое NestJS создает через MongooseModule.forRoot в app.module.ts.

Я не уверен, как извлечь существующий объект соединения mongoose в коде службы проверки работоспособности. ,Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 22 октября 2019

mongoose будет доступен глобально, он будет обрабатывать это для вас (номер пула по умолчанию):

для любого файла в потоке узла, который вы можете импортировать для mongoose и прочитать состояние

import mongoose from 'mongoose';

console.log(mongoose.connection.readyState);

Примечание: если вы вызвали его напрямую без какой-либо асинхронной функции, он вернет 0 состояние, если его обернуть в другое состояние функции, он будет работать как charm

...