Ram*_*ngh 2 mongoose mongodb node.js nestjs
我正在使用 @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
})]
Run Code Online (Sandbox Code Playgroud)
现在,NestJS 服务在 Kubernetes 集群中运行,并进行了适当的健康、活跃度和就绪检查。每当在服务上调用就绪或运行状况端点时,我需要检查托管的 Atlas Mongo DB 连接是否可用或是否发生中断。截至目前,为就绪和健康端点执行以下代码:
this.mongoDbConnection = await mongoose.connect(process.env.MONGODB_URI, options);
return (this.mongoDbConnection.connection.readyState === 1);
Run Code Online (Sandbox Code Playgroud)
但这会创建与 mongo DB 服务器的新连接。我想要的是检索 NestJS 通过 app.module.ts 中的 MongooseModule.forRoot 建立的现有连接的 readyState。
我不确定如何在健康检查服务代码中检索现有的猫鼬连接对象。任何帮助将非常感激。
kaz*_*vac 13
我建议使用 @nestjs/terminus 模块,请参阅文档和/或存储库以将模块集成到应用程序中。
你的健康控制器看起来像这样
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"),
],
);
}
}
Run Code Online (Sandbox Code Playgroud)
尝试删除此行
useUnifiedTopology: true
Run Code Online (Sandbox Code Playgroud)
更新:
我为我的回答道歉。我的项目像这样为 K8s 创建健康检查路线
import { InjectConnection } from '@nestjs/mongoose';
import { Connection } from 'mongoose';
@Controller()
export class HealthzController {
constructor (@InjectConnection() private readonly connection: Connection) { }
@Get('/_status/healthz')
healthCheck (@Res() res: Response) {
if (this.connection.readyState === 1) {
res.status(HttpStatus.OK).json({ db: { status: 'up' } });
} else {
res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({ db: { status: 'down' } });
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望能帮到你。
| 归档时间: |
|
| 查看次数: |
4674 次 |
| 最近记录: |