NodeJS Prisma管理活动运行的Prisma客户端示例的问题

vs3odd8k  于 2023-03-01  发布在  Node.js
关注(0)|答案(2)|浏览(186)

我是Prisma和Nodejs的新手
我不小心创建了很多Prisma客户端示例,这些示例一直显示以下警告
warn(prisma-client) There are already 10 instances of Prisma Client actively running.
即使我试图删除旧文件,并创建一个新的棱镜,它不断显示相同的警告。
我想知道是否有办法清除已经在运行的重复示例?
我发现了很多信息,只是为了防止这种情况发生,而不是清除它。

Node js version.        : v14.18.2
NPM version.            : 6.14.15
prisma                  : 3.7.0
@prisma/client          : 3.7.0

谢谢你的帮助。

ubof19bj

ubof19bj1#

所以问题是每次你需要使用new PrismaClient()的时候,你可能都在创建一个new PrismaClient(),理想的情况是示例化它一次并且只使用那个示例,在文档中他们推荐这样做
如果您使用的是无服务器环境,也可以尝试以下代码:

import { PrismaClient } from "@prisma/client";

declare global {
  namespace NodeJS {
    interface Global {
      prisma: PrismaClient;
    }
  }
}

let prisma: PrismaClient;

if (!global.prisma) {
  global.prisma = new PrismaClient({
    log: ["info"],
  });
}
prisma = global.prisma;

export default prisma;
jbose2ul

jbose2ul2#

问题是您可能正在创建new PrismaClient()
你可以使用singleTon模式来解决它,(我在这里使用typescript!)

import { PrismaClient } from '@prisma/client';

export class Prisma {
  public static Prisma: PrismaClient;

  static getPrisma() {
    // create a new instance of PrismaClient if one isn't already created
    this.Prisma ||= new PrismaClient();
    return this.Prisma;
  }
}

相关问题