寻找NestJS中Prisma的最佳实践

寻找NestJS中Prisma的最佳实践,nestjs,prisma,Nestjs,Prisma,我在文档中发现的内容描述了必须创建Prisma服务 import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common'; import { PrismaClient } from '@prisma/client'; @Injectable() export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleD

我在文档中发现的内容描述了必须创建Prisma服务

import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';

@Injectable()
export class PrismaService
  extends PrismaClient
  implements OnModuleInit, OnModuleDestroy {
  async onModuleInit() {
    await this.$connect();
  }

  async onModuleDestroy() {
    await this.$disconnect();
  }
}
到目前为止还不错,但正确的用法是什么

我是否应该将其包装到一个模块中,并将该模块导入任何其他与数据库相关的服务中

import { Module } from '@nestjs/common';
import { PrismaService } from './prisma.service';

@Module({
  providers: [PrismaService],
  exports: [PrismaService],
})
export class PrismaModule {}
我应该指定全局装饰器吗?与解决方案1相比,这对整体连接有什么影响

import { Module, Global } from '@nestjs/common';
import { PrismaService } from './prisma.service';

@Global()
@Module({
  providers: [PrismaService],
  exports: [PrismaService],
})
export class PrismaModule {}
我是否应该只指定没有模块包装器的服务,并通过root/app模块导出它

import { Module } from '@nestjs/common';
import { PrismaService } from './prisma.service';

@Module({
  providers: [PrismaService]
})
export class AppModule {}
关于整体连接的优点和缺点是什么?为了模拟Prisma服务,对单元测试有什么影响