Khai báo globalThis cho PrismaClient như nào?

Trong TypeScript (hoặc JavaScript), để khai báo globalThis cho PrismaClient nhằm tránh tạo nhiều instance khi sử dụng trong môi trường phát triển (development), bạn có thể làm như sau:

Cách 1: Sử dụng globalThis trong TypeScript

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

declare global {
  var prisma: PrismaClient | undefined;
}

const prisma = globalThis.prisma || new PrismaClient();

if (process.env.NODE_ENV !== 'production') {
  globalThis.prisma = prisma;
}

export default prisma;

Cách 2: Sử dụng trong JavaScript (không cần declare global)

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

globalThis.prisma = globalThis.prisma || new PrismaClient();

export default globalThis.prisma;

Tại sao cần globalThis?

  • Trong môi trường phát triển (development), nếu bạn dùng hot reload hoặc nodemon, có thể sẽ tạo nhiều instance của PrismaClient, dẫn đến lỗi "Too many connections" với database.

  • globalThis giúp lưu instance duy nhất trong toàn bộ ứng dụng.

Kiểm tra:

  • Chạy console.log(prisma); để kiểm tra xem instance có bị tạo nhiều lần không.

Cách này giúp bạn sử dụng Prisma tối ưu hơn, đặc biệt khi làm việc với Next.js, Express hoặc các ứng dụng server-side khác. 🚀

Last updated

Was this helpful?