TypeORM pour JavaScript (Node.js) : guide complet
1. Qu'est-ce que TypeORM et pourquoi l'utiliser ?
TypeORM est une puissante bibliothèque Object-Relational Mapping (ORM) conçue pour interagir avec les bases de données dans l'environnement Node.js. Elle prend en charge à la fois TypeScript et JavaScript, offrant aux développeurs un moyen pratique de travailler avec des bases de données relationnelles (PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server, Oracle et CockroachDB) grâce à une approche orientée objet. Au lieu d'écrire des requêtes SQL brutes, vous manipulez des entités (Entity) — des classes JavaScript ordinaires qui sont automatiquement mappées aux tables de la base de données.
Pourquoi utiliser TypeORM ? Premièrement, elle accélère considérablement le développement : vous n'avez pas besoin d'écrire manuellement des requêtes SQL pour les opérations CRUD (Create, Read, Update, Delete). Deuxièmement, elle assure la sécurité des types (si vous utilisez TypeScript) et une protection contre les injections SQL grâce à l'utilisation de requêtes paramétrées. Troisièmement, TypeORM fournit un puissant Query Builder pour les requêtes complexes, des migrations pour gérer le schéma de la base de données, ainsi qu'une prise en charge des relations entre les tables (un-à-un, un-à-plusieurs, plusieurs-à-plusieurs). Cela en fait un choix idéal pour créer des applications évolutives et maintenables.
Contrairement à d'autres ORM, TypeORM utilise activement les décorateurs (en TypeScript) ou les annotations (en JavaScript via des fonctionnalités expérimentales), rendant le code déclaratif et intuitif. La bibliothèque prend également en charge les modèles Active Record et Data Mapper, permettant au développeur de choisir le style de travail le plus adapté. Grâce à sa flexibilité et à ses fonctionnalités riches, TypeORM est l'un des ORM les plus populaires de l'écosystème Node.js.
2. Installation
Pour installer TypeORM dans votre projet Node.js, utilisez le gestionnaire de paquets npm. Vous devrez également installer le pilote pour votre base de données. Voici les commandes pour les SGBD les plus courants.
# Installation de TypeORM
npm install typeorm --save
# Installation du pilote pour PostgreSQL
npm install pg --save
# Installation du pilote pour MySQL / MariaDB
npm install mysql2 --save
# Installation du pilote pour SQLite
npm install sqlite3 --save
# Installation du pilote pour Microsoft SQL Server
npm install mssql --save
# Installation du pilote pour CockroachDB
npm install pg --save
# Pour TypeScript, installez également reflect-metadata et les types
npm install reflect-metadata --save
npm install @types/node --save-dev
Après l'installation, assurez-vous que votre fichier tsconfig.json (si vous utilisez TypeScript) inclut les paramètres suivants :
{
"emitDecoratorMetadata": true,
"experimentalDecorators": true
}
Pour JavaScript (Node.js), ces paramètres ne sont pas nécessaires, mais vous pouvez utiliser les décorateurs expérimentaux si vous le souhaitez.
3. Démarrage rapide — exemple minimal fonctionnel
Créons une application simple qui se connecte à une base de données SQLite (base de données fichier, ne nécessite pas d'installation de serveur) et effectue des opérations de base.
Créez un fichier index.js et ajoutez le code suivant :
const { createConnection, EntitySchema } = require("typeorm");
// Définition de l'entité (Entity) via EntitySchema
const UserSchema = new EntitySchema({
name: "User",
tableName: "users",
columns: {
id: {
primary: true,
type: "int",
generated: true
},
firstName: {
type: "varchar"
},
lastName: {
type: "varchar"
}
}
});
// Connexion et opérations CRUD
async function main() {
const connection = await createConnection({
type: "sqlite",
database: "demo.db",
entities: [UserSchema],
synchronize: true
});
const userRepository = connection.getRepository(UserSchema);
// Création d'un utilisateur
const newUser = userRepository.create({
firstName: "Jean",
lastName: "Dupont"
});
await userRepository.save(newUser);
console.log("Utilisateur créé :", newUser);
// Lecture de tous les utilisateurs
const users = await userRepository.find();
console.log("Tous les utilisateurs :", users);
await connection.close();
}
main().catch(error => console.error("Erreur :", error));
Ce code crée une table users dans une base de données SQLite, insère un enregistrement, puis affiche tous les utilisateurs. Exécutez le fichier avec node index.js pour voir le résultat.
Aussi dans la bibliothèque
Jetons JWT en C# (.NET) : guide complet avec exemples
Envoi de SMS en Swift (iOS/macOS) : API MessageUI et services tiers
Winston pour JavaScript (Node.js) : guide complet avec exemples
Programmation réactive en C++ : bibliothèques et pratique