nestjs - 如何使用@nestjs/terminus 为 Prisma 创建自定义健康检查?
问题描述
由于@nestjs/terminus没有为 Prisma 提供健康检查,我试图根据他们的Mongoose 健康检查来创建它。
当我尝试:
import * as Prisma from 'prisma';
...
...
private getContextConnection(): any | null {
const {
getConnectionToken,
// eslint-disable-next-line @typescript-eslint/no-var-requires
} = require('prisma') as typeof Prisma;
try {
return this.moduleRef.get(getConnectionToken('DatabaseConnection') as string, {
strict: false,
});
} catch (err) {
return null;
}
}
...
...
const connection = options.connection || this.getContextConnection();
if (!connection) {
throw new ConnectionNotFoundError(
this.getStatus(key, isHealthy, {
message: 'Connection provider not found in application context',
}),
);
}
我似乎总是得到:“消息”:“在应用程序上下文中找不到连接提供程序”。连接有问题,或者我不太了解运行状况检查的实际工作原理
解决方案
mongoose 实现的简单副本不会起作用,因为NestJSMongoose
type/module 和Prisma
. 尤其getConnectionToken
是包里面不存在Prisma
。
我无法评论扩展 terminus 以支持 prisma 的最佳方法是什么。您可能需要为此深入研究一下terminus
界面。但是,在 Prisma 中获取健康检查/ping 的一种简单方法是使用以下查询:
prisma.$queryRaw`SELECT 1`
推荐阅读
- swift - Swift Generics - 无法推断通用参数“T”
- python - Python 递归骑士之旅
- angularjs - 通过 angularjs 调用 Web API 返回奇怪的数据格式
- scala - Scala中case语句中的cons运算符
- r - 如何扩大文本的输出窗口?
- javascript - 括号 p5.js“未捕获的类型错误:无法读取未定义的属性‘屏幕外’”
- numpy - xarray:通过 OPeNDAP 存储的数据的平均值
- internet-explorer - IE和Edge 503文件但可以直接打
- sql - 查询中的节点 mssql 绑定
- angularjs - 使用 AngularJs 读取 JSON 文件内容