7. Prisma Client
Prisma Client — это автоматически сгенерированный, типобезопасный клиент для доступа к базе данных. После запуска npx prisma generate он создаётся в node_modules/@prisma/client и полностью отражает вашу текущую схему.
Создание и использование клиента
Заголовок раздела «Создание и использование клиента»Самый простой способ использовать Prisma Client:
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() { const users = await prisma.user.findMany() console.log(users)}
main() .finally(() => prisma.$disconnect())Паттерн Singleton
Заголовок раздела «Паттерн Singleton»В реальных приложениях создавать новый экземпляр PrismaClient на каждый запрос — плохая практика. Используйте паттерн Singleton:
import { PrismaClient } from '@prisma/client'
const globalForPrisma = globalThis as unknown as { prisma: PrismaClient | undefined}
export const prisma = globalForPrisma.prisma ?? new PrismaClient()
if (process.env.NODE_ENV !== 'production') { globalForPrisma.prisma = prisma}Connection Pooling
Заголовок раздела «Connection Pooling»Prisma использует встроенный пул подключений. По умолчанию размер пула рассчитывается автоматически, но вы можете настроить его:
DATABASE_URL="postgresql://user:pass@localhost:5432/db?connection_limit=10"Логирование запросов
Заголовок раздела «Логирование запросов»Для отладки можно включить логирование всех запросов:
const prisma = new PrismaClient({ log: ['query', 'info', 'warn', 'error'],})Отключение клиента
Заголовок раздела «Отключение клиента»Всегда закрывайте соединение при завершении работы приложения:
await prisma.$disconnect()