Arbeit mit Datenbanken in JavaScript: PostgreSQL und MongoDB auf Node.js

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

Arbeiten mit Datenbanken in JavaScript: PostgreSQL und MongoDB auf Node.js



Moderne Webentwicklung in JavaScript ist ohne effektive Datenverwaltung nicht denkbar. Node.js als Serverplattform bietet leistungsstarke Werkzeuge für die Interaktion mit verschiedenen Datenbankverwaltungssystemen (DBVS). In diesem Artikel betrachten wir detailliert die Arbeit mit zwei beliebten Lösungen — dem relationalen PostgreSQL und dem dokumentenorientierten MongoDB. Sie erfahren, wie Sie eine Verbindung zu diesen Datenbanken herstellen, CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) durchführen und eine fundierte Wahl zwischen ihnen treffen.



Das Material ist sowohl für Anfänger, die gerade erst das Backend-Entwicklung in JavaScript lernen, als auch für erfahrene Spezialisten nützlich, die ihr Wissen systematisieren möchten. Alle Codebeispiele sind für die Node.js-Laufzeitumgebung geschrieben.



Einrichtung der Umgebung und Installation der Treiber



Bevor Sie beginnen, müssen Sie die entsprechenden Pakete über npm installieren. Für PostgreSQL wird der pg-Treiber verwendet, und für MongoDB der offizielle mongodb-Treiber oder die beliebte ODM-Bibliothek mongoose.



Erstellen Sie ein neues Projekt und installieren Sie die Abhängigkeiten:



mkdir db-example && cd db-examplenpm init -ynpm install pg mongoose


Jetzt ist Ihre Umgebung bereit für Experimente. Stellen Sie sicher, dass die entsprechenden Datenbankserver auf Ihrem Rechner laufen (PostgreSQL auf Port 5432 und MongoDB auf Port 27017).



1. Arbeiten mit PostgreSQL über den pg-Treiber



PostgreSQL ist ein leistungsstarkes relationales DBMS mit SQL-Unterstützung. Für die Interaktion damit in Node.js wird das Paket pg verwendet, das sowohl einen Verbindungspool als auch einen einzelnen Client bereitstellt.



Betrachten wir ein grundlegendes Beispiel für die Verbindung und Ausführung von Abfragen:



const { Pool } = require('pg');

// Konfiguration des Verbindungspoolsconst pool = new Pool({ user: 'postgres', host: 'localhost', database: 'testdb', password: 'your_password', port: 5432,});

// Asynchrone Funktion für die Arbeit mit der Datenbankasync function runPostgresExample() { try { // Erstellen einer Tabelle await pool.query(` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, age INTEGER ); `);

// INSERT — Hinzufügen von Daten const insertResult = await pool.query( 'INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING *', ['Ivan Petrov', 'ivan@example.com', 30] ); console.log('Benutzer hinzugefügt:', insertResult.rows[0]);

// SELECT — Lesen von Daten const selectResult = await pool.query('SELECT * FROM users'); console.log('Alle Benutzer:', selectResult.rows);

// UPDATE — Aktualisieren von Daten await pool.query( 'UPDATE users SET age = $1 WHERE name = $2', [31, 'Ivan Petrov'] ); console.log('Alter aktualisiert');

// DELETE — Löschen von Daten await pool.query('DELETE FROM users WHERE name = $1', ['Ivan Petrov']); console.log('Benutzer gelöscht'); } catch (err) { console.error('PostgreSQL-Fehler:', err.message); } finally { await pool.end(); }}

runPostgresExample();


Beachten Sie die Verwendung von parametrisierten Abfragen mit Platzhaltern $1, $2 usw. Dies schützt vor SQL-Injection und ist eine bewährte Methode. Für Produktionsumgebungen wird ein Verbindungspool empfohlen, da er Verbindungen effizient verwaltet.



2. Arbeiten mit MongoDB über Mongoose



MongoDB ist eine NoSQL-Datenbank, die Daten in einem JSON-ähnlichen Format (BSON) speichert. Mongoose bietet eine praktische Abstraktion mit Schemas, Validierung und Methoden für die Arbeit mit Sammlungen.



Beispiel für die Verbindung und Durchführung von CRUD-Operationen mit Mongoose:



const mongoose = require('mongoose');

// Definieren des Benutzer-Schemas

Blogs

Buchempfehlungen