From 04dbec1ced9316bf9873128740724fd1c5ce9ef0 Mon Sep 17 00:00:00 2001 From: Nurul Sundarani Date: Thu, 2 Feb 2023 21:48:05 +0530 Subject: [PATCH 1/3] Updated Code for instantiating single PrismaClient instance The current code snippet was using outdated NodeJS.Global interface that was removed in Node version 16. The new snippet is used from our related Help Article for the same topic: https://www.prisma.io/docs/guides/database/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices --- .../150-connection-management/index.mdx | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx b/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx index b5d9ee7237..a604a41fd6 100644 --- a/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx +++ b/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx @@ -89,25 +89,21 @@ As a workaround, you can store `PrismaClient` as a global variable in developmen ```ts file=client.ts import { PrismaClient } from '@prisma/client' -// add prisma to the NodeJS global type -interface CustomNodeJsGlobal extends NodeJS.Global { - prisma: PrismaClient -} - -// Prevent multiple instances of Prisma Client in development -declare const global: CustomNodeJsGlobal - -const prisma = global.prisma || new PrismaClient() +const globalForPrisma = global as unknown as { prisma: PrismaClient } -if (process.env.NODE_ENV === 'development') global.prisma = prisma +export const prisma = + globalForPrisma.prisma || + new PrismaClient({ + log: ['query'], + }) -export default prisma +if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma ``` The way that you import and use the client does not change: ```ts file=app.ts -import prisma from './client' +import { prisma } from './client' async function main() { const allUsers = await prisma.user.findMany() From a5c1bd97bff585d13635ee78ce0124091e32c41e Mon Sep 17 00:00:00 2001 From: Nurul Sundarani Date: Fri, 3 Feb 2023 12:01:20 +0530 Subject: [PATCH 2/3] Removed Logging --- .../150-connection-management/index.mdx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx b/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx index a604a41fd6..38664e98fd 100644 --- a/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx +++ b/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx @@ -93,9 +93,7 @@ const globalForPrisma = global as unknown as { prisma: PrismaClient } export const prisma = globalForPrisma.prisma || - new PrismaClient({ - log: ['query'], - }) + new PrismaClient() if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma ``` From e313d33cb8bc4ef4e336b8631afbf84881981da3 Mon Sep 17 00:00:00 2001 From: Nurul Sundarani Date: Fri, 3 Feb 2023 12:01:55 +0530 Subject: [PATCH 3/3] Update index.mdx --- .../150-connection-management/index.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx b/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx index 38664e98fd..1f807fce26 100644 --- a/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx +++ b/content/300-guides/100-performance-and-optimization/150-connection-management/index.mdx @@ -92,8 +92,7 @@ import { PrismaClient } from '@prisma/client' const globalForPrisma = global as unknown as { prisma: PrismaClient } export const prisma = - globalForPrisma.prisma || - new PrismaClient() + globalForPrisma.prisma || new PrismaClient() if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma ```