Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen
Vid utveckling och uppdatering av NocoBase-plugins kan databasstrukturer eller konfigurationer ändras på ett inkompatibelt sätt. För att säkerställa smidiga uppgraderingar erbjuder NocoBase en Migration-mekanism för att hantera dessa ändringar genom att skriva migrationsfiler. I den här guiden får ni en systematisk genomgång av hur Migration används och dess utvecklingsflöde.
Migration är ett skript som automatiskt körs vid plugin-uppgraderingar och används för att lösa följande problem:
Tidpunkten för när en Migration körs delas in i tre kategorier:
| Typ | Utlösningstidpunkt | Exekveringsscenario |
|---|---|---|
beforeLoad | Innan alla plugin-konfigurationer laddas | |
afterSync | Efter att samlingskonfigurationer har synkroniserats med databasen (samlingsstrukturen har redan ändrats) | |
afterLoad | Efter att alla plugin-konfigurationer har laddats |
Migrationsfiler ska placeras i src/server/migrations/*.ts i plugin-katalogen. NocoBase erbjuder kommandot create-migration för att snabbt generera migrationsfiler.
Valfria parametrar
| Parameter | Beskrivning |
|---|---|
--pkg <pkg> | Ange plugin-paketnamn |
--on [on] | Ange exekveringstidpunkt, alternativ: beforeLoad, afterSync, afterLoad |
Exempel
Den genererade migrationsfilens sökväg är följande:
Filens initiala innehåll:
⚠️
appVersionanvänds för att identifiera den version som uppgraderingen riktar sig mot. Miljöer med versioner som är lägre än den angivna versionen kommer att köra denna migration.
I migrationsfiler kan ni via this komma åt följande vanliga egenskaper och API:er för att enkelt hantera databasen, plugins och applikationsinstanser:
Vanliga egenskaper
this.app
Nuvarande NocoBase-applikationsinstans. Kan användas för att komma åt globala tjänster, plugins eller konfigurationer.
this.db
Databasinstans, tillhandahåller gränssnitt för att hantera modeller (samlingar).
this.plugin
Nuvarande plugin-instans, kan användas för att komma åt pluginets anpassade metoder.
this.sequelize
Sequelize-instans, kan direkt exekvera rå SQL eller transaktionsoperationer.
this.queryInterface
Sequelize QueryInterface, används ofta för att modifiera tabellstrukturer, till exempel att lägga till fält eller ta bort tabeller.
Exempel på att skriva en Migration
Utöver de vanliga egenskaper som listats ovan, tillhandahåller Migration även omfattande API:er. För detaljerad dokumentation, se Migration API.
Exekveringen av en Migration utlöses av kommandot nocobase upgrade:
Vid uppgradering bestämmer systemet exekveringsordningen baserat på Migration-typen och appVersion.
Vid plugin-utveckling rekommenderas det att använda en Mock Server för att testa om migrationen körs korrekt, för att undvika att skada verklig data.
Tips: Genom att använda en Mock Server kan ni snabbt simulera uppgraderingsscenarier och verifiera Migrationens exekveringsordning och dataändringar.
beforeLoad, afterSync eller afterLoad baserat på vilka objekt ni hanterar, för att undvika beroenden till moduler som inte har laddats.appVersion för att tydligt specificera vilken version migrationen är avsedd för, för att förhindra upprepad exekvering.