Skip to content

NOTE

**Hinweis** — Derzeit benötigt Prisma Node.js, um bestimmten Generierungscode auszuführen. Stellen Sie sicher, dass Node.js in der Umgebung installiert ist, in der Sie `bunx prisma`-Befehle ausführen.

Ein neues Projekt erstellen

Erstellen Sie zuerst ein Verzeichnis und initialisieren Sie es mit bun init.

bash
mkdir prisma-postgres-app
cd prisma-postgres-app
bun init

Prisma-Abhängigkeiten installieren

Installieren Sie dann die Prisma-CLI (prisma), Prisma Client (@prisma/client) und die Accelerate-Erweiterung als Abhängigkeiten.

bash
bun add -d prisma
bun add @prisma/client @prisma/extension-accelerate

Prisma mit PostgreSQL initialisieren

Wir verwenden die Prisma-CLI mit bunx, um unser Schema und Migrationsverzeichnis zu initialisieren. Wir verwenden PostgreSQL als unsere Datenbank.

bash
bunx --bun prisma init --db

Dies erstellt ein grundlegendes Schema. Wir müssen es aktualisieren, um den neuen Rust-freien Client mit Bun-Optimierung zu verwenden. Öffnen Sie prisma/schema.prisma und ändern Sie den Generator-Block, fügen Sie dann ein einfaches User-Modell hinzu.

prisma
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?
} 

Datenbankverbindung konfigurieren

Richten Sie Ihre Postgres-Datenbank-URL in der .env-Datei ein.

ini
DATABASE_URL="postgresql://username:password@localhost:5432/mydb?schema=public"

Datenbankmigration erstellen und ausführen

Erstellen und führen Sie dann die initiale Migration aus.

Dies erstellt eine .sql-Migrationsdatei in prisma/migrations und führt die Migration gegen Ihre Postgres-Datenbank aus.

bash
bunx --bun prisma migrate dev --name init
txt
Environment 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 generieren

Wie in der Ausgabe angegeben, generiert Prisma unseren Prisma Client neu, wann immer wir eine neue Migration ausführen. Der Client bietet eine vollständig typisierte API zum Lesen und Schreiben aus unserer Datenbank. Sie können den Client manuell mit der Prisma-CLI neu generieren.

sh
bunx --bun prisma generate

Prisma Client mit Accelerate initialisieren

Jetzt müssen wir eine Prisma Client-Instanz erstellen. Erstellen Sie eine neue Datei prisma/db.ts, um den PrismaClient mit dem Postgres-Adapter zu initialisieren.

ts
import { PrismaClient } from "./generated/client";
import { withAccelerate } from '@prisma/extension-accelerate'

export const prisma = new PrismaClient().$extends(withAccelerate())

Ein Testskript erstellen

Schreiben wir ein einfaches Skript, um einen neuen Benutzer zu erstellen und dann die Anzahl der Benutzer in der Datenbank zu zählen.

ts
import { prisma } from "./prisma/db";

// create a new user
await prisma.user.create({
  data: {
    name: "John Dough",
    email: `john-${Math.random()}@example.com`,
  },
});

// count the number of users
const count = await prisma.user.count();
console.log(`Es gibt ${count} Benutzer in der Datenbank.`);

Die Anwendung ausführen und testen

Lassen Sie uns dieses Skript mit bun run ausführen. Jedes Mal, wenn wir es ausführen, wird ein neuer Benutzer erstellt.

bash
bun run index.ts
txt
Es gibt 1 Benutzer in der Datenbank.
bash
bun run index.ts
txt
Es gibt 2 Benutzer in der Datenbank.
bash
bun run index.ts
txt
Es gibt 3 Benutzer in der Datenbank.

Das war's! Jetzt, wo Sie Prisma Postgres mit Bun eingerichtet haben, empfehlen wir, die offiziellen Prisma Postgres-Dokumentationen zu konsultieren, während Sie Ihre Anwendung weiterentwickeln.

Bun von www.bunjs.com.cn bearbeitet