TypeORM Migration

NestJS 🟡 Mid

Définition

Fichier versionne qui décrit les modifications de schema de base de données (up/down). Permet de gérer l'évolution du schema de façon reproductible.

Analogie

Comme un historique Git mais pour la structure de ta base de données.

Exemple de code

export class AddUserAge1234567890 implements MigrationInterface {
  async up(qr: QueryRunner) {
    await qr.addColumn('user',
      new TableColumn({ name: 'age', type: 'int', isNullable: true }));
  }
  async down(qr: QueryRunner) {
    await qr.dropColumn('user', 'age');
  }
}

Cas d'usage

Déployer des changements de schema en production de manière sécurisée et réversible.

Anti-pattern

Utiliser synchronize: true en production au lieu de migrations versionees.
#database#interview

En entretien

  1. Explique-moi ce qu'est une migration TypeORM et pourquoi c'est important en production.

    C'est un fichier versionné qui décrit les modifications de schema de base de données avec des méthodes up et down, un peu comme un historique Git mais pour la structure de la base de données. Ça permet de déployer des changements de schema en production de manière sécurisée et réversible.

  2. Pourquoi éviter d'utiliser synchronize: true en production ?

    Parce que c'est l'anti-pattern identifié explicitement : synchronize: true modifie le schema automatiquement sans contrôle, ce qui est risqué en prod. Il faut utiliser des migrations versionnées avec up/down pour maîtriser et pouvoir annuler chaque changement.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre