Migration
Migration est la classe de base de migration de données de NocoBase, utilisée pour gérer les modifications de structure de base de données et les migrations de données lors de la mise à niveau d'un plugin. Elle s'importe depuis @nocobase/server.
Propriétés de classe
on
Contrôle le moment d'exécution de la migration dans le flux d'upgrade. Par défaut 'afterLoad'.
appVersion
Chaîne de plage semver qui détermine sur quelles versions d'application cette migration s'exécutera. Le framework utilise semver.satisfies() pour vérifier : la migration ne s'exécutera que si la version de l'application courante satisfait à cette plage.
Propriétés d'instance
app
Instance Application de NocoBase. Elle vous permet d'accéder à tous les modules de l'application :
db
Instance Database de NocoBase, permettant d'obtenir des Repository, d'exécuter des requêtes, etc. :
plugin
Instance du plugin courant. Disponible uniquement dans les migrations au niveau plugin (vaut undefined dans les migrations core).
sequelize
Instance Sequelize, permet d'exécuter directement du SQL brut :
queryInterface
QueryInterface de Sequelize, utilisée pour exécuter des opérations DDL (ajouter/supprimer des colonnes, ajouter des contraintes, modifier des types de colonnes, etc.) :
pm
Gestionnaire de plugins. Via this.pm.repository, vous pouvez interroger et modifier les métadonnées des plugins :
Méthodes d'instance
up()
Exécutée lors de la mise à niveau. Les sous-classes doivent override cette méthode pour écrire la logique de migration.
down()
Exécutée lors du rollback. La plupart des migrations la laissent vide. Si vous avez besoin de prendre en charge le rollback, écrivez ici l'opération inverse.
Exemples complets
Utiliser l'API Repository pour mettre à jour des données (afterLoad)
Le scénario le plus courant : après le chargement de tous les plugins, mettre à jour des données en lot avec l'API Repository :
Utiliser QueryInterface pour modifier la structure des tables (beforeLoad)
Exécuter du DDL bas niveau avant le chargement du plugin — par exemple ajouter une nouvelle colonne et une contrainte d'unicité à une table :
Utiliser du SQL brut (afterSync)
Une fois la structure de la table synchronisée, faire la migration de données avec du SQL brut :
Créer un fichier de migration
Création via la commande CLI :
La commande génère un fichier horodaté dans le répertoire src/server/migrations/ du plugin, avec ce template :
Paramètres de la commande :
Liens connexes
- Scripts de mise à niveau Migration (développement de plugin) — Tutoriel d'utilisation des migrations dans le développement de plugins
- Collections - tables de données — defineCollection et synchronisation de la structure des tables
- Database - opérations de base de données — API Repository et opérations de base de données
- Plugin — Relation entre
install()et migration dans le cycle de vie du plugin

