Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie
Tijdens de ontwikkeling en updates van NocoBase-plugins kunnen de databasestructuren of configuraties van plugins incompatibele wijzigingen ondergaan. Om een soepele upgrade te garanderen, biedt NocoBase een Migration-mechanisme. Dit mechanisme maakt het mogelijk om deze wijzigingen af te handelen door migration-bestanden te schrijven. Deze handleiding helpt u systematisch inzicht te krijgen in het gebruik en de ontwikkelingsworkflow van Migration.
Een Migration is een script dat automatisch wordt uitgevoerd tijdens plugin-upgrades. Het wordt gebruikt om de volgende problemen op te lossen:
De uitvoeringstijd van een Migration is onderverdeeld in drie typen:
| Type | Triggermoment | Uitvoeringsscenario |
|---|---|---|
beforeLoad | Voordat alle plugin-configuraties zijn geladen | |
afterSync | Nadat collectie-configuraties zijn gesynchroniseerd met de database (de collectiestructuur is al gewijzigd) | |
afterLoad | Nadat alle plugin-configuraties zijn geladen |
Migration-bestanden moeten worden geplaatst in src/server/migrations/*.ts binnen de plugin-map. NocoBase biedt de create-migration-opdracht om snel migration-bestanden te genereren.
Optionele parameters
| Parameter | Beschrijving |
|---|---|
--pkg <pkg> | Specificeer de pakketnaam van de plugin |
--on [on] | Specificeer het uitvoeringsmoment, opties: beforeLoad, afterSync, afterLoad |
Voorbeeld
Het gegenereerde migration-bestandspad is als volgt:
Initiële bestandsinhoud:
⚠️
appVersionwordt gebruikt om de versie aan te geven waarop de upgrade gericht is. Omgevingen met een versie lager dan de gespecificeerde versie zullen deze migration uitvoeren.
In Migration-bestanden kunt u via this de volgende veelgebruikte eigenschappen en API's benaderen, wat het eenvoudig maakt om databases, plugins en applicatie-instanties te beheren:
Veelgebruikte eigenschappen
this.app
De huidige NocoBase-applicatie-instantie. Kan worden gebruikt om toegang te krijgen tot globale services, plugins of configuratie.
this.db
De database service-instantie, biedt interfaces voor het uitvoeren van bewerkingen op modellen (collecties).
this.plugin
De huidige plugin-instantie, kan worden gebruikt om toegang te krijgen tot aangepaste methoden van de plugin.
this.sequelize
De Sequelize-instantie, kan direct ruwe SQL of transactie-bewerkingen uitvoeren.
this.queryInterface
Sequelize's QueryInterface, vaak gebruikt om tabelstructuren te wijzigen, zoals het toevoegen van velden, verwijderen van tabellen, enz.
Voorbeeld van een Migration
Naast de hierboven genoemde veelgebruikte eigenschappen, biedt Migration ook uitgebreide API's. Voor gedetailleerde documentatie, zie Migration API.
De uitvoering van een Migration wordt geactiveerd door de nocobase upgrade-opdracht:
Tijdens de upgrade bepaalt het systeem de uitvoeringsvolgorde op basis van het Migration-type en appVersion.
Bij de ontwikkeling van plugins wordt aangeraden een Mock Server te gebruiken om te testen of de migration correct wordt uitgevoerd, om zo schade aan echte gegevens te voorkomen.
Tip: Met een Mock Server kunt u snel upgradescenario's simuleren en de uitvoeringsvolgorde van Migration en gegevenswijzigingen verifiëren.
beforeLoad, afterSync of afterLoad op basis van de te bewerken objecten, om afhankelijkheden van niet-geladen modules te voorkomen.appVersion om duidelijk de versie te specificeren waarvoor de migration van toepassing is, om herhaalde uitvoering te voorkomen.