Diese Dokumentation wurde automatisch von KI übersetzt.
Während der Entwicklung und Aktualisierung von NocoBase-Plugins können sich die Datenbankstrukturen oder Konfigurationen der Plugins inkompatibel ändern. Um reibungslose Upgrades zu gewährleisten, bietet NocoBase einen Migration-Mechanismus an. Dieser ermöglicht es Ihnen, diese Änderungen durch das Schreiben von Migrationsdateien zu verwalten. Dieser Leitfaden führt Sie systematisch durch die Verwendung und den Entwicklungsprozess von Migrationen.
Eine Migration ist ein Skript, das bei Plugin-Upgrades automatisch ausgeführt wird, um folgende Probleme zu lösen:
Der Ausführungszeitpunkt von Migrationen gliedert sich in drei Typen:
| Typ | Auslösezeitpunkt | Ausführungsszenario |
|---|---|---|
beforeLoad | Vor dem Laden aller Plugin-Konfigurationen | |
afterSync | Nachdem die Sammlungskonfigurationen mit der Datenbank synchronisiert wurden (die Sammlungsstruktur wurde bereits geändert) | |
afterLoad | Nachdem alle Plugin-Konfigurationen geladen wurden |
Migrationsdateien sollten im Plugin-Verzeichnis unter src/server/migrations/*.ts abgelegt werden. NocoBase bietet den Befehl create-migration, um Migrationsdateien schnell zu generieren.
Optionale Parameter
| Parameter | Beschreibung |
|---|---|
--pkg <pkg> | Geben Sie den Namen des Plugin-Pakets an |
--on [on] | Geben Sie den Ausführungszeitpunkt an, Optionen: beforeLoad, afterSync, afterLoad |
Beispiel
Der Pfad der generierten Migrationsdatei lautet wie folgt:
Initialer Dateiinhalt:
⚠️
appVersionwird verwendet, um die Version zu identifizieren, auf die sich das Upgrade bezieht. Umgebungen mit einer Version, die kleiner als die angegebene Version ist, führen diese Migration aus.
In Migrationsdateien können Sie über this auf die folgenden gängigen Eigenschaften und APIs zugreifen, um Datenbanken, Plugins und Anwendungsinstanzen bequem zu steuern:
Gängige Eigenschaften
this.app
Die aktuelle NocoBase-Anwendungsinstanz. Kann für den Zugriff auf globale Dienste, Plugins oder Konfigurationen verwendet werden.
this.db
Die Datenbankdienstinstanz, die Schnittstellen für die Arbeit mit Modellen (Sammlungen) bereitstellt.
this.plugin
Die aktuelle Plugin-Instanz. Kann für den Zugriff auf benutzerdefinierte Methoden des Plugins verwendet werden.
this.sequelize
Die Sequelize-Instanz. Sie kann rohe SQL- oder Transaktionsoperationen direkt ausführen.
this.queryInterface
Sequelize's QueryInterface. Sie wird häufig verwendet, um Tabellenstrukturen zu ändern, z. B. Felder hinzuzufügen oder Tabellen zu löschen.
Beispiel für das Schreiben einer Migration
Zusätzlich zu den oben aufgeführten gängigen Eigenschaften bietet Migration auch umfangreiche APIs. Eine detaillierte Dokumentation finden Sie unter Migration API.
Die Ausführung von Migrationen wird durch den Befehl nocobase upgrade ausgelöst:
Beim Upgrade bestimmt das System die Ausführungsreihenfolge basierend auf dem Migrationstyp und der appVersion.
Bei der Plugin-Entwicklung wird empfohlen, einen Mock Server zu verwenden, um zu testen, ob die Migration korrekt ausgeführt wird, und so eine Beschädigung realer Daten zu vermeiden.
Tipp: Mit einem Mock Server können Sie Upgrade-Szenarien schnell simulieren und die Ausführungsreihenfolge von Migrationen sowie Datenänderungen überprüfen.
beforeLoad, afterSync oder afterLoad basierend auf den zu bearbeitenden Objekten, um Abhängigkeiten von nicht geladenen Modulen zu vermeiden.appVersion, um die für die Migration geltende Version klar zu definieren und eine wiederholte Ausführung zu verhindern.