Arbeit mit Datenbanken in TypeScript: PostgreSQL und MongoDB für Anfänger
\n\nModerne Webentwicklung kommt selten ohne Datenbanken aus. TypeScript, als streng typisierte Erweiterung von JavaScript, bietet hervorragende Möglichkeiten für sichere und vorhersagbare Arbeit mit Daten. In diesem Artikel werden wir erläutern, wie man zwei beliebte Datenbanken – die relationale PostgreSQL und die dokumentenorientierte MongoDB – in TypeScript-Projekten einbindet und nutzt. Das Material richtet sich an Anfänger-Entwickler, die mit den Grundlagen von TypeScript und Node.js vertraut sind.
\n\n1. Umgebungsvorbereitung und Installation von Abhängigkeiten
\n\nStellen Sie vor Beginn sicher, dass Node.js und npm installiert sind. Für die Arbeit mit TypeScript installieren Sie den Compiler und die Typen für Node.js:
\n\nnpm install -g typescript\nnpm init -y\nnpm install typescript @types/node --save-dev\nnpx tsc --init\n\nFür die Arbeit mit Datenbanken verwenden wir beliebte Bibliotheken:
\n- \n
- TypeORM – ORM für PostgreSQL (und andere SQL-Datenbanken) \n
- Mongoose – ODM für MongoDB \n
Installieren Sie diese in Ihrem Projekt:
\n\nnpm install typeorm reflect-metadata pg\nnpm install mongoose\n\nVergessen Sie nicht, "experimentalDecorators": true und "emitDecoratorMetadata": true in der Datei tsconfig.json hinzuzufügen.
2. Arbeit mit PostgreSQL über TypeORM
\n\nPostgreSQL ist ein leistungsstarkes relationales DBMS. TypeORM ermöglicht die Arbeit damit über Entitäten (Entities) und Repositories, was den Code sauber und typisiert macht.
\n\n2.1. Erstellung der Verbindung und einer Entität
\n\nErstellen wir eine Datei data-source.ts zur Konfiguration der Verbindung:
import { DataSource } from "typeorm";\n\nexport const AppDataSource = new DataSource({\n type: "postgres",\n host: "localhost",\n port: 5432,\n username: "your_user",\n password: "your_password",\n database: "your_db",\n synchronize: true,\n logging: false,\n entities: ["src/entity/**/*.ts"],\n});\n\nJetzt erstellen wir die Entität User in der Datei src/entity/User.ts:
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";\n\n@Entity()\nexport class User {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column()\n name: string;\n\n @Column({ unique: true })\n email: string;\n\n @Column()\n age: number;\n}\n\n2.2. CRUD-Operationen mit TypeORM
\n\nBeispiel für das Erstellen und Abrufen von Benutzern:
\n\nimport { AppDataSource } from "./data-source";\nimport { User } from "./entity/User";\n\nasync function main() {\n await AppDataSource.initialize();\n const userRepository = AppDataSource.getRepository(User);\n\n // Erstellen\n const newUser = userRepository.create({\n name: "Ivan",\n email: "ivan@example.com",\n age: 25\n });\n await userRepository.save(newUser);\n console.log("Benutzer erstellt:", newUser);\n\n // Alle lesen\n const users = await userRepository.find();\n console.log("Alle Benutzer:", users);\n\n // Aktualisieren\n await userRepository.update({ id: 1 }, { age: 26 });\n\n // Löschen\n await userRepository.delete({ id: 1 });\n}\n\nmain().catch(console.error);\n\nTypeORM generiert automatisch SQL-Abfragen, und die Typisierung von TypeScript schützt vor Fehlern während der Kompilierung.
\n\n3. Arbeit mit MongoDB über Mongoose
\n\nMongoDB ist eine NoSQL-Datenbank, die Daten in einem JSON-ähnlichen Format speichert. Mongoose bietet Schema und Validierung für TypeScript.
\n\n3.1. Verbindung und Definition des Schemas
\n\nErstellen wir eine Datei db.ts für die Verbindung:
import mongoose from "mongoose";\n\nexport async function connectDB() {\n await mongoose.connect("mongodb://localhost:27017/mydb");\n console.log("Mit MongoDB verbunden");\n}