Prisma für TypeScript: vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Prisma: moderner ORM für TypeScript

\n\n

Prisma ist ein moderner ORM (Object-Relational Mapping) für TypeScript und Node.js, der die Arbeit mit Datenbanken grundlegend verändert. Im Gegensatz zu traditionellen ORMs wie Sequelize oder TypeORM bietet Prisma ein deklaratives Datenmodell, automatische Typgenerierung und eine intuitiv verständliche API. Die Bibliothek unterstützt PostgreSQL, MySQL, SQLite, SQL Server, MongoDB und CockroachDB.

\n\n

Das Hauptziel von Prisma ist es, die Arbeit mit Datenbanken sicher, leistungsstark und komfortabel zu gestalten. Dank der Integration mit TypeScript erhalten Sie Autovervollständigung und Typprüfung auf Kompilierungsebene, was die Anzahl der Laufzeitfehler erheblich reduziert. Prisma besteht aus drei Schlüsselkomponenten:

\n\n
    \n
  • Prisma Client — ein automatisch generierter Client für die Arbeit mit der Datenbank
  • \n
  • Prisma Migrate — ein System zur Verwaltung von Migrationen
  • \n
  • Prisma Studio — eine grafische Benutzeroberfläche zum Anzeigen und Bearbeiten von Daten
  • \n
\n\n

Installation von Prisma

\n\n

Die Installation von Prisma in ein TypeScript-Projekt erfolgt über npm. Erstellen Sie zunächst ein neues Projekt:

\n\n
mkdir my-prisma-project\ncd my-prisma-project\nnpm init -y
\n\n

Installieren Sie die Prisma CLI und den Prisma Client:

\n\n
npm install prisma @prisma/client --save
\n\n

Initialisieren Sie Prisma im Projekt:

\n\n
npx prisma init
\n\n

Dieser Befehl erstellt ein Verzeichnis prisma mit der Datei schema.prisma und eine Datei .env für Umgebungsvariablen.

\n\n

Schnellstart: Codebeispiel

\n\n

Betrachten wir die Erstellung einer einfachen Anwendung zur Benutzerverwaltung. Definieren wir zunächst das Modell in prisma/schema.prisma:

\n\n
generator client {\n  provider = "prisma-client-js"\n}\n\ndatasource db {\n  provider = "sqlite"\n  url      = env("DATABASE_URL")\n}\n\nmodel User {\n  id        Int      @id @default(autoincrement())\n  email     String   @unique\n  name      String?\n  posts     Post[]\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n}\n\nmodel Post {\n  id        Int      @id @default(autoincrement())\n  title     String\n  content   String?\n  published Boolean  @default(false)\n  author    User     @relation(fields: [authorId], references: [id])\n  authorId  Int\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n}
\n\n

Führen Sie die Migration aus, um die Tabellen in SQLite zu erstellen:

\n\n
npx prisma migrate dev --name init
\n\n

Erstellen Sie nun eine Datei index.ts mit einem Anwendungsbeispiel:

\n\n
import { PrismaClient } from '@prisma/client'\n\nconst prisma = new PrismaClient()\n\nasync function main() {\n  // Benutzer erstellen\n  const user = await prisma.user.create({\n    data: {\n      email: 'alice@example.com',\n      name: 'Alice',\n      posts: {\n        create: { title: 'Hello World' }\n      }\n    }\n  })\n  console.log('Created user:', user)\n\n  // Alle Benutzer mit ihren Beiträgen abrufen\n  const users = await prisma.user.findMany({\n    include: { posts: true }\n  })\n  console.log('All users:', JSON.stringify(users, null, 2))\n}\n\nmain()\n  .catch(e => console.error(e))\n  .finally(async () => await prisma.$disconnect())
\n\n

Führen Sie den Code aus:

\n\n
npx ts-node index.ts
\n\n

Grundlegende Methoden des Prisma Client

\n\n

1. findUnique

\n

Was es tut: Findet einen einzelnen Datensatz anhand einer eindeutigen Kennung (id, email usw.).

\n

Parameter:

\n
    \n
  • where — ein Objekt mit Suchbedingungen (erforderlich)
  • \n
  • include — (optional) zum Einbeziehen verwandter Modelle
  • \n
  • select — (optional) zur Auswahl bestimmter Felder
  • \n
\n

Beispiel:

\n
const user = await prisma.user.findUni                    

Empfehlungen