NOTE
**Примечание** — В настоящее время Prisma требует установки Node.js для выполнения некоторого кода генерации. Убедитесь, что Node.js установлен в среде, где вы выполняете команды `bunx prisma`.Создание нового проекта
Сначала создайте директорию и инициализируйте её с помощью bun init.
mkdir prisma-postgres-app
cd prisma-postgres-app
bun initУстановка зависимостей Prisma
Затем установите CLI Prisma (prisma), Prisma Client (@prisma/client) и расширение accelerate в качестве зависимостей.
bun add -d prisma
bun add @prisma/client @prisma/extension-accelerateИнициализация Prisma с PostgreSQL
Мы будем использовать CLI Prisma с bunx для инициализации нашей схемы и директории миграций. Мы будем использовать PostgreSQL в качестве нашей базы данных.
bunx --bun prisma init --dbЭто создаёт базовую схему. Нам нужно обновить её для использования нового клиента без Rust с оптимизацией Bun. Откройте prisma/schema.prisma и измените блок генератора, затем добавьте простую модель User.
generator client {
provider = "prisma-client"
output = "./generated"
engineType = "client"
runtime = "bun"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
} Настройка подключения к базе данных
Настройте URL вашей базы данных Postgres в файле .env.
DATABASE_URL="postgresql://username:password@localhost:5432/mydb?schema=public"Создание и запуск миграции базы данных
Затем сгенерируйте и выполните начальную миграцию.
Это создаст файл миграции .sql в prisma/migrations и выполнит миграцию на вашей базе данных Postgres.
bunx --bun prisma migrate dev --name initEnvironment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "mydb", schema "public" at "localhost:5432"
Applying migration `20250114141233_init`
The following migration(s) have been created and applied from new schema changes:
prisma/migrations/
└─ 20250114141233_init/
└─ migration.sql
Your database is now in sync with your schema.
✔ Generated Prisma Client (6.17.1) to ./generated in 18msГенерация Prisma Client
Как указано в выводе, Prisma повторно генерирует наш Prisma client всякий раз, когда мы выполняем новую миграцию. Клиент предоставляет полностью типизированный API для чтения и записи из нашей базы данных. Вы можете вручную перегенерировать клиент с помощью CLI Prisma.
bunx --bun prisma generateИнициализация Prisma Client с Accelerate
Теперь нам нужно создать экземпляр Prisma client. Создайте новый файл prisma/db.ts для инициализации PrismaClient с Postgres адаптером.
import { PrismaClient } from "./generated/client";
import { withAccelerate } from '@prisma/extension-accelerate'
export const prisma = new PrismaClient().$extends(withAccelerate())Создание тестового скрипта
Давайте напишем простой скрипт для создания нового пользователя, затем подсчитаем количество пользователей в базе данных.
import { prisma } from "./prisma/db";
// создать нового пользователя
await prisma.user.create({
data: {
name: "John Dough",
email: `john-${Math.random()}@example.com`,
},
});
// подсчитать количество пользователей
const count = await prisma.user.count();
console.log(`В базе данных ${count} пользователей.`);Запуск и тестирование приложения
Давайте запустим этот скрипт с помощью bun run. Каждый раз, когда мы запускаем его, создаётся новый пользователь.
bun run index.tsВ базе данных 1 пользователей.bun run index.tsВ базе данных 2 пользователей.bun run index.tsВ базе данных 3 пользователей.Вот и всё! Теперь, когда вы настроили Prisma Postgres с Bun, мы рекомендуем обращаться к официальной документации Prisma Postgres по мере дальнейшей разработки вашего приложения.