Questa documentazione è stata tradotta automaticamente dall'IA.
Durante lo sviluppo e gli aggiornamenti dei plugin NocoBase, le strutture del database o le configurazioni dei plugin potrebbero subire modifiche incompatibili. Per garantire aggiornamenti fluidi, NocoBase offre un meccanismo di Migration per gestire queste modifiche attraverso la scrittura di file di migration. Questa guida Le fornirà una comprensione sistematica dell'utilizzo e del flusso di lavoro di sviluppo delle Migration.
La Migration è uno script che viene eseguito automaticamente durante gli aggiornamenti dei plugin, utilizzato per risolvere i seguenti problemi:
I tempi di esecuzione delle Migration si dividono in tre categorie:
| Tipo | Momento di attivazione | Scenario di esecuzione |
|---|---|---|
beforeLoad | Prima del caricamento di tutte le configurazioni dei plugin | |
afterSync | Dopo la sincronizzazione delle configurazioni delle collezioni con il database (la struttura della collezione è già stata modificata) | |
afterLoad | Dopo il caricamento di tutte le configurazioni dei plugin |
I file di Migration devono essere posizionati nella directory del plugin in src/server/migrations/*.ts. NocoBase fornisce il comando create-migration per generare rapidamente i file di migration.
Parametri opzionali
| Parametro | Descrizione |
|---|---|
--pkg <pkg> | Specifica il nome del pacchetto del plugin |
--on [on] | Specifica il momento di esecuzione, opzioni: beforeLoad, afterSync, afterLoad |
Esempio
Il percorso del file di migration generato è il seguente:
Contenuto iniziale del file:
⚠️
appVersionviene utilizzato per identificare la versione a cui è destinato l'aggiornamento. Gli ambienti con versioni inferiori a quella specificata eseguiranno questa migration.
Nei file di Migration, può accedere alle seguenti proprietà e API comuni tramite this per operare comodamente su database, plugin e istanze dell'applicazione:
Proprietà comuni
this.app
Istanza corrente dell'applicazione NocoBase. Può essere utilizzata per accedere a servizi globali, plugin o configurazioni.
this.db
Istanza del servizio di database, fornisce interfacce per operare sui modelli (collezioni).
this.plugin
Istanza del plugin corrente, può essere utilizzata per accedere ai metodi personalizzati del plugin.
this.sequelize
Istanza di Sequelize, può eseguire direttamente SQL nativo o operazioni di transazione.
this.queryInterface
QueryInterface di Sequelize, comunemente utilizzata per modificare le strutture delle tabelle, come l'aggiunta di campi, l'eliminazione di tabelle, ecc.
Esempio di scrittura di una Migration
Oltre alle proprietà comuni elencate sopra, la Migration offre anche API ricche. Per la documentazione dettagliata, consulti Migration API.
L'esecuzione delle Migration viene attivata dal comando nocobase upgrade:
Durante l'aggiornamento, il sistema determinerà l'ordine di esecuzione in base al tipo di Migration e a appVersion.
Nello sviluppo dei plugin, si consiglia di utilizzare un Mock Server per verificare che la migration venga eseguita correttamente, evitando di danneggiare i dati reali.
Suggerimento: L'utilizzo di un Mock Server consente di simulare rapidamente scenari di aggiornamento e di verificare l'ordine di esecuzione delle Migration e le modifiche ai dati.
beforeLoad, afterSync o afterLoad in base agli oggetti dell'operazione, per evitare di dipendere da moduli non caricati.appVersion per specificare chiaramente la versione a cui si applica la migration, per evitare esecuzioni ripetute.