Drizzle ORM für TypeScript: Das vollständige Handbuch
1. Was ist Drizzle ORM und warum braucht man es?
Drizzle ORM ist eine moderne, schlanke und type-safe ORM-Bibliothek (Object-Relational Mapping) für TypeScript und JavaScript. Im Gegensatz zu schwergewichtigen ORMs wie TypeORM oder Sequelize wurde Drizzle mit Fokus auf Leistung, Vorhersagbarkeit und vollständige Integration in das TypeScript-Typsystem entwickelt. Es versucht nicht, SQL zu verstecken, sondern bietet eine bequeme und typsichere Möglichkeit, SQL-Abfragen zu schreiben, während die volle Kontrolle über den generierten Code erhalten bleibt.
Die Hauptaufgabe von Drizzle besteht darin, Entwickler vom Schreiben roher SQL-Strings und der manuellen Typisierung von Abfrageergebnissen zu befreien. Sie beschreiben das Datenbankschema in TypeScript-Code, und Drizzle leitet automatisch die Typen für alle Tabellen, Beziehungen und Abfragen ab. Das bedeutet, dass Fehler durch falsche Spaltennamen, falsche Datentypen oder fehlende Felder bereits zur Kompilierzeit und nicht erst zur Laufzeit erkannt werden. Die Bibliothek unterstützt PostgreSQL, MySQL, SQLite und andere gängige Datenbanken.
Drizzle ist ideal für Projekte, bei denen Leistung und Kontrolle über SQL wichtig sind, aber der Komfort eines ORMs (Autovervollständigung in der IDE, Typprüfung und deklarative Schemabeschreibung) gewünscht wird. Es wird häufig in Kombination mit Next.js, NestJS, Express und anderen Frameworks verwendet. Dank seiner Leichtigkeit (ca. 7KB gzipped) und dem Verzicht auf Magie ist Drizzle eine ausgezeichnete Wahl sowohl für kleine Projekte als auch für große Enterprise-Anwendungen.
2. Installation
Die Installation von Drizzle ORM und seinem CLI-Tool (Drizzle Kit) erfolgt über npm oder yarn. Die Wahl des Treibers hängt von der verwendeten Datenbank ab.
# Für PostgreSQL
npm install drizzle-orm pg
npm install -D drizzle-kit @types/pg
# Für MySQL
npm install drizzle-orm mysql2
npm install -D drizzle-kit @types/node
# Für SQLite
npm install drizzle-orm better-sqlite3
npm install -D drizzle-kit @types/better-sqlite3
Nach der Installation muss eine Konfigurationsdatei drizzle.config.ts für Drizzle Kit erstellt werden:
import type { Config } from "drizzle-kit";
export default {
schema: "./src/db/schema.ts",
out: "./drizzle",
dialect: "postgresql", // oder "mysql", "sqlite"
dbCredentials: {
url: process.env.DATABASE_URL!,
},
} satisfies Config;
3. Schnellstart
Ein minimales funktionierendes Beispiel für PostgreSQL. Zuerst wird das Schema definiert, dann die Verbindung hergestellt und eine Abfrage ausgeführt.
// src/db/schema.ts
import { pgTable, serial, text, integer } from "drizzle-orm/pg-core";
export const users = pgTable("users", {
id: serial("id").primaryKey(),
name: text("name").notNull(),
age: integer("age"),
});
// src/index.ts
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
import { users } from "./db/schema";
import { eq } from "drizzle-orm";
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
});
const db = drizzle(pool);
async function main() {
// Daten einfügen
const newUser = await db.insert(users).values({
name: "Alice",
age: 30,
}).returning();
console.log("Erstellter Benutzer:", newUser);
// Daten abfragen
const allUsers = await db.select().from(users);
console.log("Alle Benutzer:", allUsers);
// Abfrage mit Bedingung
const user = await db.select()
.from(users)
.where(eq(users.name, "Alice"));
console.log("Gefundener Benutzer:", user);
}
main().catch(console.error);
4. Wichtige Methoden und Funktionen
Nachfolgend sind die wichtigsten Methoden von Drizzle ORM mit Signaturen und Beispielen aufgeführt.
4.1 drizzle(client)
Auch in der Bibliothek
Verwaltung der Konfiguration von TypeScript-Anwendungen: Vollständiger Leitfaden
Arbeiten mit ZIP-Archiven in Node.js: vollständige Anleitung
Redis-Client für Rust: Überblick über die Bibliothek redis-rs
E-Mail-Versand in C# (.NET) mit SmtpClient und MailKit
HTML-Parsing in C# (.NET): Bibliotheken HtmlAgilityPack und AngleSharp