Arbeiten mit Datenbanken in TypeScript: PostgreSQL und MongoDB für Einsteiger
TypeScript ist eine streng typisierte Erweiterung von JavaScript, die Ihrem Code Zuverlässigkeit und Vorhersagbarkeit verleiht. Bei der Arbeit mit Datenbanken ist TypeScript besonders nützlich: Sie können Typen für Entitäten definieren, die Korrektheit von Abfragen zur Kompilierzeit überprüfen und viele Laufzeitfehler vermeiden. In diesem Artikel sehen wir uns an, wie man eine Verbindung zu zwei der beliebtesten Datenbanken herstellt — dem relationalen PostgreSQL und dem dokumentenorientierten MongoDB — und grundlegende Datenoperationen durchführt. Das Material richtet sich an Anfänger, die mit den Grundlagen von TypeScript vertraut sind.
Umgebungseinrichtung und Abhängigkeitsinstallation
Bevor Sie Code schreiben, müssen Sie das Projekt einrichten. Erstellen Sie ein neues Verzeichnis und initialisieren Sie das Projekt:
mkdir ts-db-examplecd ts-db-examplenpm init -ynpm install typescript @types/node ts-node --save-devnpx tsc --initJetzt installieren wir die Bibliotheken für die Arbeit mit Datenbanken. Für PostgreSQL verwenden wir TypeORM (ein beliebtes ORM mit guter TypeScript-Unterstützung) und für MongoDB — Mongoose (eine Bibliothek für Schema-Modellierung und Arbeit mit MongoDB).
npm install typeorm reflect-metadata pgnpm install mongooseInstallieren Sie auch die Typen für Node.js und TypeORM-Einstellungen:
npm install @types/node --save-devIn der Datei tsconfig.json müssen Sie die folgenden Optionen aktivieren:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "experimentalDecorators": true, "emitDecoratorMetadata": true }}Jetzt ist die Projektstruktur bereit. Erstellen Sie einen src-Ordner und darin Dateien für die Arbeit mit jeder Datenbank.
Arbeiten mit PostgreSQL über TypeORM
Verbindungseinrichtung
TypeORM ermöglicht es Ihnen, mit Datenbanken mithilfe von Dekoratoren und Entitäten zu arbeiten. Erstellen Sie eine Datei src/postgres.ts und richten Sie eine Verbindung zur lokalen PostgreSQL-Datenbank ts_db ein:
import "reflect-metadata";import { DataSource } from "typeorm";
export const AppDataSource = new DataSource({ type: "postgres", host: "localhost", port: 5432, username: "postgres", password: "password", database: "ts_db", synchronize: true, // erstellt automatisch Tabellen (nur für Entwicklung) logging: false, entities: ["src/entity/**/*.ts"],});Erstellen einer Entität
Eine Entität ist eine Klasse, die auf eine Datenbanktabelle abbildet. Erstellen Sie einen Ordner src/entity und eine Datei User.ts:
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
@Entity()export class User { @PrimaryGeneratedColumn() id: number;
@Column({ length: 100 }) name: string;
@Column({ unique: true }) email: string;
@Column({ default: 18 }) age: number;}Durchführen von CRUD-Operationen
Schreiben wir nun Funktionen zum Erstellen, Lesen, Aktualisieren und Löschen von Benutzern in der Datei src/postgres-crud.ts:
import { AppDataSource } from "./postgres";import { User } from "./entity/User";
async function main() { await AppDataSource.initialize(); const userRepository = AppDataSource.getRepository(User);
// CREATE — Erstellen eines neuen Benutzers const newUser = userRepository.create({ name: "Ivan Petrov", email: "ivan@example.com", age: 25, }); await userRepository.save(newUser); console.log("Benutzer erstellt:", newUser);
// READ — Lesen aller Benutzer const allUsers = await userRepository.find(); console.log("Alle Benutzer:", allUsers);
// UPDATE — Aktualisieren des Alters des Benutzers mit id=1 const userToUpdate =