#nestjs #prisma #health-check
Вопрос:
Поскольку @nestjs/terminus не предоставляет проверку работоспособности Prisma, я пытаюсь создать ее на основе проверки здоровья Мангуста.
Когда я пытаюсь:
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',
}),
);
}
Мне всегда кажется, что я получаю: «сообщение»: «Поставщик подключения не найден в контексте приложения».
Есть проблема с подключением, или я не совсем понимаю, как на самом деле работает проверка работоспособности
Комментарии:
1. Поскольку пакета NestJS Prisma нет, и, следовательно, никто не регистрирует
DatabaseConnection
токен, это, вероятно, имеет больше смысла делатьPrismaClient.$connect()
при проверке работоспособности.
Ответ №1:
Наивная копия реализации мангуста не будет работать, потому что существуют различия между NestJSMongoose
типом/модулем и Prisma
. В частности, getConnectionToken
не существует внутри Prisma
упаковки.
Я не могу прокомментировать, как лучше всего было бы расширить терминус для поддержки prisma. Для этого вам, возможно, придется немного покопаться в terminus
интерфейсе. Однако простой способ получить проверку работоспособности/проверку в Prisma-использовать следующий запрос:
prisma.$queryRaw`SELECT 1`