TypeORM für JavaScript (Node.js): Komplettguide 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

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.

Empfehlungen