TypeORM für JavaScript (Node.js): Das vollständige Handbuch
1. Was ist TypeORM und warum braucht man es?
TypeORM ist eine leistungsstarke Object-Relational Mapping (ORM)-Bibliothek für Node.js. Sie unterstützt sowohl TypeScript als auch JavaScript und bietet Entwicklern eine komfortable Möglichkeit, mit relationalen Datenbanken (PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server, Oracle und CockroachDB) zu arbeiten – und das mit einem objektorientierten Ansatz. Anstatt rohe SQL-Abfragen zu schreiben, arbeiten Sie mit sogenannten Entitäten (Entities) – einfachen JavaScript-Klassen, die automatisch auf Datenbanktabellen abgebildet werden.
Warum TypeORM? Erstens beschleunigt es die Entwicklung enorm: Sie müssen keine SQL-Abfragen für CRUD-Operationen (Create, Read, Update, Delete) mehr manuell schreiben. Zweitens sorgt es für Typsicherheit (bei Verwendung von TypeScript) und schützt durch parametrisierte Abfragen vor SQL-Injection. Drittens bietet TypeORM einen leistungsstarken Query Builder für komplexe Abfragen, Migrationen zur Verwaltung des Datenbankschemas sowie Unterstützung für Beziehungen zwischen Tabellen (1:1, 1:N, N:M). Das macht es zur idealen Wahl für skalierbare und wartbare Anwendungen.
Im Gegensatz zu anderen ORMs setzt TypeORM stark auf Dekorateure (in TypeScript) oder Annotationen (in JavaScript über experimentelle Funktionen), was den Code deklarativ und intuitiv macht. Die Bibliothek unterstützt sowohl das Active-Record- als auch das Data-Mapper-Pattern, sodass Sie den für Sie passenden Arbeitsstil wählen können. Dank seiner Flexibilität und seines umfangreichen Funktionsumfangs ist TypeORM eines der beliebtesten ORMs im Node.js-Ökosystem.
2. Installation
Um TypeORM in Ihr Node.js-Projekt zu installieren, verwenden Sie den Paketmanager npm. Sie benötigen außerdem den Treiber für Ihre Datenbank. Nachfolgend finden Sie die Befehle für die gängigsten Datenbanksysteme.
# TypeORM installieren
npm install typeorm --save
# Treiber für PostgreSQL installieren
npm install pg --save
# Treiber für MySQL / MariaDB installieren
npm install mysql2 --save
# Treiber für SQLite installieren
npm install sqlite3 --save
# Treiber für Microsoft SQL Server installieren
npm install mssql --save
# Treiber für CockroachDB installieren
npm install pg --save
# Für TypeScript zusätzlich reflect-metadata und Typen installieren
npm install reflect-metadata --save
npm install @types/node --save-dev
Stellen Sie nach der Installation sicher, dass in Ihrer tsconfig.json (falls Sie TypeScript verwenden) die folgenden Einstellungen aktiviert sind:
{
"emitDecoratorMetadata": true,
"experimentalDecorators": true
}
Für JavaScript (Node.js) sind diese Einstellungen nicht erforderlich, Sie können aber experimentelle Dekorateure verwenden, wenn Sie möchten.
3. Schnellstart – Ein minimales Arbeitsbeispiel
Lassen Sie uns eine einfache Anwendung erstellen, die eine Verbindung zu einer SQLite-Datenbank herstellt (eine dateibasierte Datenbank, die keinen Server benötigt) und grundlegende Operationen ausführt.
Erstellen Sie eine Datei index.js und fügen Sie den folgenden Code ein:
const { createConnection, EntitySchema } = require("typeorm");
// Entität (Entity) über EntitySchema definieren
const UserSchema = new EntitySchema({
name: "User",
tableName: "users",
columns: {
id: {
primary: true,
type: "int",
generated: true
},
firstName: {
type: "varchar"
},
lastName: {
type: "varchar"
}
}
});
// Verbindung herstellen und Daten speichern
async function main() {
const connection = await createConnection({
type: "sqlite",
database: "test.db",
entities: [UserSchema],
synchronize: true,
logging: false
});
// Repository für die User-Entität abrufen
const userRepository = connection.getRepository(UserSchema);
// Neuen Benutzer erstellen
const newUser = userRepository.create({
firstName: "Max",
lastName: "Mustermann"
});
// Benutzer in der Datenbank speichern
await userRepository.save(newUser);
console.log("Benutzer gespeichert mit ID:", newUser.id);
// Alle Benutzer abrufen
const users = await userRepository.find();
console.log("Alle Benutzer:", users);
// Verbindung schließen
await connection.close();
}
main().catch(error => console.log("Fehler:", error));
Führen Sie das Skript mit node index.js aus. TypeORM erstellt automatisch die Datei test.db und die Tabelle users. Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Benutzer gespeichert mit ID: 1
Alle Benutzer: [ { id: 1, firstName: 'Max', lastName: 'Mustermann' } ]
Herzlichen Glückwunsch! Sie haben soeben Ihre erste TypeORM-Anwendung erstellt und ausgeführt.