Arbeiten mit Datenbanken in TypeScript: PostgreSQL und MongoDB

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

Arbeit mit Datenbanken in TypeScript: PostgreSQL und MongoDB



TypeScript ist eine leistungsstarke Programmiersprache, die JavaScript um statische Typisierung erweitert. Bei der Entwicklung moderner Webanwendungen ist die Arbeit mit Datenbanken ein wesentlicher Bestandteil. In diesem Artikel betrachten wir, wie man effektiv mit zwei populären Datenbanken arbeitet – der relationalen PostgreSQL und der dokumentenorientierten MongoDB – unter Verwendung von TypeScript.



1. Umgebungsvorbereitung und Auswahl des ORM



Bevor wir beginnen, muss das Projekt eingerichtet werden. Erstellen Sie ein neues Node.js-Projekt mit TypeScript-Unterstützung:



mkdir ts-database-democd ts-database-demonpm init -ynpm install typescript @types/node ts-node --save-devnpx tsc --init


Für die Arbeit mit Datenbanken verwenden wir beliebte Bibliotheken:

  • Prisma – modernes ORM für PostgreSQL (und andere SQL-Datenbanken)
  • Mongoose – ODM für MongoDB mit ausgezeichneter TypeScript-Unterstützung


Installieren Sie die erforderlichen Pakete:



npm install prisma @prisma/client mongoosenpm install @types/mongoose --save-dev


2. Arbeit mit PostgreSQL über Prisma



Prisma ist ein ORM, das automatisch TypeScript-Typen basierend auf Ihrem Datenbankschema generiert. Dies gewährleistet vollständige Typsicherheit.



2.1. Prisma-Konfiguration



Initialisieren Sie Prisma im Projekt:



npx prisma init


Definieren Sie in der Datei prisma/schema.prisma das Datenmodell:



generator client {  provider = "prisma-client-js"}

datasource db { provider = "postgresql" url = env("DATABASE_URL")}

model User { id Int @id @default(autoincrement()) email String @unique name String? posts Post[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt}

model Post { id Int @id @default(autoincrement()) title String content String? published Boolean @default(false) author User @relation(fields: [authorId], references: [id]) authorId Int createdAt DateTime @default(now()) updatedAt DateTime @updatedAt}


Erstellen Sie eine Datei .env mit der Verbindungszeichenfolge:



DATABASE_URL="postgresql://user:password@localhost:5432/mydb"


Führen Sie die Migration aus:



npx prisma migrate dev --name init


2.2. CRUD-Operationen mit TypeScript



Jetzt schreiben wir typisierten Code für die Arbeit mit der Datenbank. Erstellen Sie die Datei src/postgres.ts:



import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

interface CreateUserInput { email: string; name?: string;}

interface CreatePostInput { title: string; content?: string; authorId: number;}

// Benutzer erstellenasync function createUser(data: CreateUserInput) { return await prisma.user.create({ data: { email: data.email, name: data.name, }, });}

// Alle Benutzer mit Beiträgen abrufenasync function getUsersWithPosts() { return await prisma.user.findMany({ include: { posts: true, }, });}

// Beitrag erstellenasync function createPost(data: CreatePostInput) { return await prisma.post.create({ data: { title: data.title, content: data.content, authorId: data.authorId, }, });}

// Benutzer aktualisierenasync function updateUser(id: number, data: Partial<CreateUserInput>) { return await prisma.user.update({ where: { id }, data, });}

// Benutzer löschenasync function deleteUser(id: number) { return await prisma.user.delete({ where: { id }, });}

// Beispielverwendung(async () => { try { const user = await createUser({ email: 'ivan@example.com', n

Blogs

Buchempfehlungen