Migrations de bases de données en JavaScript (Node.js) : aperçu complet des outils
Les migrations de bases de données sont un moyen de modifier le schéma d'une base de données de manière contrôlée et versionnée. Dans le monde Node.js, il existe plusieurs bibliothèques puissantes qui permettent d'automatiser ce processus. Dans cet article, nous examinerons les trois outils les plus populaires : Sequelize, Knex.js et TypeORM.
Que sont les migrations et pourquoi en a-t-on besoin ?
Les migrations résolvent le problème de synchronisation de la structure de la base de données entre les développeurs et les environnements (dev, staging, production). Au lieu d'exécuter manuellement des scripts SQL, vous décrivez les modifications dans le code en JavaScript/TypeScript. Avantages :
- Application automatique des modifications
- Possibilité d'annulation (rollback) vers une version antérieure
- Stockage de l'historique des modifications dans le dépôt
- Prise en charge de différents SGBD (PostgreSQL, MySQL, SQLite, etc.)
1. Sequelize — ORM avec système de migration intégré
Sequelize est l'un des ORM les plus populaires pour Node.js. Il fournit un outil CLI pour gérer les migrations. Installation :
npm install --save sequelizenpm install --save-dev sequelize-clinpx sequelize-cli initAprès l'initialisation, les dossiers migrations, models, seeders et le fichier de configuration config/config.json sont créés.
Création d'une migration
npx sequelize-cli migration:generate --name create-users-tableExemple de contenu d'une migration :
'use strict';module.exports = { up: async (queryInterface, Sequelize) => { await queryInterface.createTable('Users', { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, username: { type: Sequelize.STRING, allowNull: false, unique: true }, email: { type: Sequelize.STRING, allowNull: false }, createdAt: { type: Sequelize.DATE, allowNull: false }, updatedAt: { type: Sequelize.DATE, allowNull: false } }); }, down: async (queryInterface, Sequelize) => { await queryInterface.dropTable('Users'); }};Application et annulation
npx sequelize-cli db:migratenpx sequelize-cli db:migrate:undo2. Knex.js — constructeur de requêtes SQL avec migrations
Knex.js n'est pas un ORM, mais un puissant constructeur de requêtes. Son système de migration est considéré comme l'un des plus flexibles. Installation :
npm install knex --savenpm install pg --save # ou mysql, sqlite3npx knex initCréation et rédaction d'une migration
npx knex migrate:make create_posts_tableExemple de code :
exports.up = function(knex) { return knex.schema.createTable('posts', (table) => { table.increments('id').primary(); table.string('title', 255).notNullable(); table.text('content'); table.integer('user_id').unsigned().references('id').inTable('users'); table.timestamps(true, true); });};
exports.down = function(knex) { return knex.schema.dropTableIfExists('posts');};Commandes pour travailler
npx knex migrate:latestnpx knex migrate:rollbacknpx knex migrate:status # affichage du statutKnex prend également en charge les « seeds » pour le remplissage initial des données :
npx knex seed:make 01_demo_usersnpx knex seed:run3. TypeORM — migrations pour projets TypeScript
TypeORM est un ORM moderne qui prend en charge à la fois JavaScript et TypeScript. Son système de migration est étroitement intégré aux décorateurs d'entités. Installation :
npm install typeorm reflect-metadata --savenpm in Aussi dans la bibliothèque
SwiftFormat Swift : guide complet avec exemples
Travailler avec les dates en PHP : aperçu des bibliothèques et outils
Envoi de SMS en TypeScript : API de la bibliothèque sms-client-ts
Validation des données en JavaScript (Node.js) avec Joi et Yup
mapstructure Go : guide complet avec exemples pratiques