gpt4 book ai didi

node.js - NestJS:如何获取 Mongoose 实例进行健康检查?

转载 作者:太空宇宙 更新时间:2023-11-03 23:13:27 25 4
gpt4 key购买 nike

我正在使用 @nestjs/mongoose 包连接到 Mongo DB。我在 app.module.ts 中有这个:

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

现在,NestJS 服务正在 Kubernetes 集群中运行,并进行适当的运行状况、 liveness 和就绪性检查。每当在服务上调用就绪或运行状况端点时,我需要检查托管的 Atlas Mongo DB 连接是否可用或是否存在中断。截至目前,为准备就绪和运行状况端点执行以下代码:

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

但这会创建与 mongo DB 服务器的新连接。我想要的是检索 NestJS 通过 app.module.ts 中的 MongooseModule.forRoot 建立的现有连接的准备状态。

我不确定如何在健康检查服务代码中检索现有的 Mongoose 连接对象。任何帮助将不胜感激。

最佳答案

我建议使用 @nestjs/terminus 模块,请参阅 documentation和/或repository将模块集成到应用程序中。

你的健康 Controller 可能看起来像这样

import { Controller, Get } from "@nestjs/common";
import {
HealthCheck,
HealthCheckResult,
HealthCheckService,
MongooseHealthIndicator,
} from "@nestjs/terminus";

@Controller("health")
export class HealthController {

constructor(
private healthCheck: HealthCheckService,
private mongooseHealth: MongooseHealthIndicator,
) {
}

@Get()
@HealthCheck()
async check(): Promise<HealthCheckResult> {
return this.healthCheck.check(
[
() => this.mongooseHealth.pingCheck("mongoDB"),
],
);
}

}

关于node.js - NestJS:如何获取 Mongoose 实例进行健康检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58507414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com