Travailler avec les bases de données en TypeScript : PostgreSQL et MongoDB

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec les bases de données en TypeScript : PostgreSQL et MongoDB



TypeScript est un langage de programmation puissant qui ajoute le typage statique à JavaScript. Lors du développement d'applications web modernes, le travail avec les bases de données est une partie essentielle. Dans cet article, nous allons voir comment travailler efficacement avec deux bases de données populaires — la relationnelle PostgreSQL et la document-oriented MongoDB — en utilisant TypeScript.



1. Préparation de l'environnement et choix de l'ORM



Avant de commencer, il est nécessaire de configurer le projet. Créez un nouveau projet Node.js avec le support de TypeScript :



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


Pour travailler avec les bases de données, nous utiliserons des bibliothèques populaires :

  • Prisma — un ORM moderne pour PostgreSQL (et d'autres bases SQL)
  • Mongoose — un ODM pour MongoDB avec un excellent support de TypeScript


Installez les paquets nécessaires :



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


2. Travailler avec PostgreSQL via Prisma



Prisma est un ORM qui génère automatiquement les types TypeScript basés sur votre schéma de base de données. Cela garantit une sécurité de typage complète.



2.1. Configuration de Prisma



Initialisez Prisma dans le projet :



npx prisma init


Dans le fichier prisma/schema.prisma, définissez le modèle de données :



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}


Créez un fichier .env avec la chaîne de connexion :



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


Exécutez la migration :



npx prisma migrate dev --name init


2.2. Opérations CRUD avec TypeScript



Écrivons maintenant du code typé pour travailler avec la base de données. Créez un fichier 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;}

// Création d'un utilisateurasync function createUser(data: CreateUserInput) { return await prisma.user.create({ data: { email: data.email, name: data.name, }, });}

// Récupération de tous les utilisateurs avec leurs postsasync function getUsersWithPosts() { return await prisma.user.findMany({ include: { posts: true, }, });}

// Création d'un postasync function createPost(data: CreatePostInput) { return await prisma.post.create({ data: { title: data.title, content: data.content, authorId: data.authorId, }, });}

// Mise à jour d'un utilisateurasync function updateUser(id: number, data: Partial<CreateUserInput>) { return await prisma.user.update({ where: { id }, data, });}

// Suppression d'un utilisateurasync function deleteUser(id: number) { return await prisma.user.delete({ where: { id }, });}

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

Blogs

Book Recommendations