Sequelize 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

1. Was ist Sequelize und warum wird es benötigt?

Sequelize ist eine leistungsstarke ORM-Bibliothek (Object-Relational Mapping) für Node.js, die relationale Datenbanken wie PostgreSQL, MySQL, MariaDB, SQLite und Microsoft SQL Server unterstützt. ORM ermöglicht es Entwicklern, mit der Datenbank zu interagieren, indem sie einen objektorientierten Ansatz verwenden, anstatt reine SQL-Abfragen zu schreiben.

Die wichtigsten Vorteile der Verwendung von Sequelize:

  • SQL-Abstraktion — Arbeiten mit Tabellen über JavaScript-Objekte und Methoden
  • Sicherheit — automatischer Schutz vor SQL-Injection
  • Migrationen — Verwaltung von Schemaänderungen der Datenbank
  • Beziehungen — einfache Implementierung von Tabellenverknüpfungen (1:1, 1:M, M:N)
  • Validierung — integrierte Mechanismen zur Datenprüfung
  • Transaktionen — Unterstützung für atomare Operationen

Sequelize ist ideal für die Erstellung von REST-APIs, Webanwendungen mit Express.js, Bots und alle Projekte, die eine zuverlässige Arbeit mit SQL-Datenbanken erfordern.

2. Installation

Die Installation von Sequelize und dem Treiber für Ihre Datenbank erfolgt über npm:

// Basis-Paket
npm install sequelize

// Treiber für PostgreSQL
npm install pg pg-hstore

// Treiber für MySQL
npm install mysql2

// Treiber für SQLite
npm install sqlite3

// Treiber für MSSQL
npm install tedious

Für einen schnellen Start mit SQLite (keine Serverinstallation erforderlich):

npm install sequelize sqlite3

3. Schnellstart mit Codebeispiel

Erstellen wir eine einfache Anwendung zur Benutzerverwaltung:

// index.js
const { Sequelize, DataTypes, Model } = require('sequelize');

// 1. Verbindung zur Datenbank (SQLite)
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: './database.sqlite',
  logging: false // SQL-Abfragen-Logging deaktivieren
});

// 2. Definition des User-Modells
class User extends Model {}
User.init({
  id: {
    type: DataTypes.INTEGER,
    autoIncrement: true,
    primaryKey: true
  },
  name: {
    type: DataTypes.STRING,
    allowNull: false
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true,
    validate: {
      isEmail: true
    }
  },
  age: {
    type: DataTypes.INTEGER,
    validate: {
      min: 0,
      max: 150
    }
  }
}, {
  sequelize,
  modelName: 'User',
  timestamps: true // fügt createdAt und updatedAt hinzu
});

// 3. Synchronisation mit der DB und Testoperationen
async function main() {
  await sequelize.sync({ force: true }); // erstellt die Tabelle neu
  console.log('Tabelle User wurde erstellt');

  // Benutzer erstellen
  const user = await User.create({
    name: 'Max Mustermann',
    email: 'max@example.com',
    age: 30
  });
  console.log('Benutzer erstellt:', user.toJSON());

  // Alle Benutzer abrufen
  const users = await User.findAll();
  console.log('Alle Benutzer:', JSON.stringify(users, null, 2));

  // Suche nach ID
  const foundUser = await User.findByPk(1);
  console.log('Gefundener Benutzer:', foundUser.name);

  // Aktualisieren
  await User.update({ age: 31 }, { where: { id: 1 } });
  console.log('Alter aktualisiert');

  // Löschen
  await User.destroy({ where: { id: 1 } });
  console.log('Benutzer gelöscht');
}

main().catch(console.error);

4. Wichtige Methoden und Funktionen

4.1. Sequelize.define() / Model.init()

Beschreibung: Definition eines Modells (Tabelle) mit Angabe der Felder und deren Typen.

Parameter:

  • modelName — Name des Modells
  • attributes — Objekt mit Felddefinitionen
  • options — Modelleinstellungen (tableName, timestamps, indexes usw.)

Beispiel:

const Product = sequelize.define('Product', {
  title: {
    type: DataTypes.ST                    

Empfehlungen