Cette documentation a été traduite automatiquement par IA.
Lors du développement et des mises à jour des plugins NocoBase, la structure de la base de données ou la configuration de ces plugins peuvent subir des modifications incompatibles. Pour garantir une exécution fluide des mises à niveau, NocoBase propose un mécanisme de Migration. Ce mécanisme permet de gérer ces changements en écrivant des fichiers de migration. Ce guide vous aidera à comprendre de manière systématique l'utilisation des Migrations et leur processus de développement.
Une Migration est un script qui s'exécute automatiquement lors des mises à niveau de plugins, et qui sert à résoudre les problèmes suivants :
Le moment d'exécution des Migrations est divisé en trois catégories :
| Type | Moment de déclenchement | Scénario d'exécution |
|---|---|---|
beforeLoad | Avant le chargement de toutes les configurations de plugins | |
afterSync | Après la synchronisation des configurations de collection avec la base de données (la structure de la collection a déjà été modifiée) | |
afterLoad | Après le chargement de toutes les configurations de plugins |
Les fichiers de Migration doivent être placés dans le répertoire src/server/migrations/*.ts du dossier de votre plugin. NocoBase met à votre disposition la commande create-migration pour générer rapidement ces fichiers.
Paramètres optionnels
| Paramètre | Description |
|---|---|
--pkg <pkg> | Spécifie le nom du package du plugin |
--on [on] | Spécifie le moment d'exécution, options : beforeLoad, afterSync, afterLoad |
Exemple
Le chemin du fichier de migration généré est le suivant :
Contenu initial du fichier :
⚠️
appVersionest utilisé pour identifier la version ciblée par la mise à niveau. Les environnements dont la version est inférieure à celle spécifiée exécuteront cette migration.
Dans les fichiers de Migration, vous pouvez accéder aux propriétés et API courantes suivantes via this pour manipuler facilement la base de données, les plugins et les instances d'application :
Propriétés courantes
this.app
Instance de l'application NocoBase actuelle. Peut être utilisée pour accéder aux services globaux, aux plugins ou à la configuration.
this.db
Instance du service de base de données, qui fournit des interfaces pour manipuler les modèles (collections).
this.plugin
Instance du plugin actuel, qui peut être utilisée pour accéder aux méthodes personnalisées du plugin.
this.sequelize
Instance de Sequelize, qui permet d'exécuter directement des requêtes SQL brutes ou des opérations transactionnelles.
this.queryInterface
QueryInterface de Sequelize, couramment utilisée pour modifier la structure des tables, par exemple pour ajouter des champs, supprimer des tables, etc.
Exemple d'écriture d'une Migration
En plus des propriétés courantes listées ci-dessus, la Migration offre également de nombreuses API. Pour une documentation détaillée, veuillez consulter l'API de Migration.
L'exécution des Migrations est déclenchée par la commande nocobase upgrade :
Lors de la mise à niveau, le système détermine l'ordre d'exécution en fonction du type de Migration et de la propriété appVersion.
Lors du développement de plugins, il est recommandé d'utiliser un Mock Server pour vérifier que la migration s'exécute correctement, afin d'éviter d'endommager des données réelles.
Tip: L'utilisation d'un Mock Server permet de simuler rapidement des scénarios de mise à niveau et de vérifier l'ordre d'exécution des Migrations ainsi que les modifications de données.
beforeLoad, afterSync ou afterLoad en fonction des objets manipulés, afin d'éviter de dépendre de modules non chargés.appVersion pour spécifier clairement la version à laquelle la migration s'applique, afin d'éviter les exécutions répétées.