Перейти к содержимому

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())

В реальных приложениях создавать новый экземпляр PrismaClient на каждый запрос — плохая практика. Используйте паттерн Singleton:

lib/prisma.ts
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
}

Prisma использует встроенный пул подключений. По умолчанию размер пула рассчитывается автоматически, но вы можете настроить его:

DATABASE_URL="postgresql://user:pass@localhost:5432/db?connection_limit=10"

Для отладки можно включить логирование всех запросов:

const prisma = new PrismaClient({
log: ['query', 'info', 'warn', 'error'],
})

Всегда закрывайте соединение при завершении работы приложения:

await prisma.$disconnect()