Travailler avec les bases de données en TypeScript : PostgreSQL et MongoDB pour débutants
\n\nLe développement web moderne ne se passe rarement de bases de données. TypeScript, en tant que surcouche strictement typée de JavaScript, offre d'excellentes possibilités pour un travail sécurisé et prévisible avec les données. Dans cet article, nous allons voir comment connecter et utiliser deux bases de données populaires — la relationnelle PostgreSQL et la base orientée documents MongoDB — dans des projets TypeScript. Ce contenu est destiné aux développeurs débutants connaissant les bases de TypeScript et Node.js.
\n\n1. Préparation de l'environnement et installation des dépendances
\n\nAvant de commencer, assurez-vous d'avoir Node.js et npm installés. Pour travailler avec TypeScript, installez le compilateur et les types pour Node.js :
\n\nnpm install -g typescript\nnpm init -y\nnpm install typescript @types/node --save-dev\nnpx tsc --init\n\nPour travailler avec les bases de données, nous utiliserons des bibliothèques populaires :
\n- \n
- TypeORM — ORM pour PostgreSQL (et autres bases SQL) \n
- Mongoose — ODM pour MongoDB \n
Installez-les dans votre projet :
\n\nnpm install typeorm reflect-metadata pg\nnpm install mongoose\n\nN'oubliez pas d'ajouter "experimentalDecorators": true et "emitDecoratorMetadata": true dans le fichier tsconfig.json.
2. Travailler avec PostgreSQL via TypeORM
\n\nPostgreSQL est un SGBD relationnel puissant. TypeORM permet de travailler avec lui via des entités (entities) et des repositories, rendant le code propre et typé.
\n\n2.1. Création de la connexion et de l'entité
\n\nCréons un fichier data-source.ts pour configurer la connexion :
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\nCréons maintenant l'entité User dans le fichier 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. Opérations CRUD avec TypeORM
\n\nExemple de création et de récupération d'utilisateurs :
\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 // Création\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("Utilisateur créé :", newUser);\n\n // Lecture de tous\n const users = await userRepository.find();\n console.log("Tous les utilisateurs :", users);\n\n // Mise à jour\n await userRepository.update({ id: 1 }, { age: 26 });\n\n // Suppression\n await userRepository.delete({ id: 1 });\n}\n\nmain().catch(console.error);\n\nTypeORM génère automatiquement les requêtes SQL, et le typage TypeScript protège contre les erreurs à la compilation.
\n\n3. Travailler avec MongoDB via Mongoose
\n\nMongoDB est une base de données NoSQL qui stocke les données dans un format similaire au JSON. Mongoose fournit un schéma et une validation pour TypeScript.
\n\n3.1. Connexion et définition du schéma
\n\nCréons un fichier db.ts pour la connexion :
import mongoose from "mongoose";\n\nexport async function connectDB() {\n await mongoose.connect("mongodb://localhost:27017/mydb");\n console.log("Connecté à MongoDB");\n}