Diese Dokumentation wurde automatisch von KI übersetzt.
Migration
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.
Konzept der Migration
Eine Migration ist ein Skript, das bei Plugin-Upgrades automatisch ausgeführt wird, um folgende Probleme zu lösen:
- Anpassungen der Datenstruktur (z. B. Hinzufügen von Feldern, Ändern von Feldtypen)
- Datenmigration (z. B. Massenaktualisierungen von Feldwerten)
- Aktualisierungen der Plugin-Konfiguration oder internen Logik
Der Ausführungszeitpunkt von Migrationen gliedert sich in drei Typen:
Migrationsdateien erstellen
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
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.
Migrationen schreiben
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.
Migrationen auslösen
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.
Migrationen testen
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.
Empfehlungen für die Entwicklungspraxis
- Migrationen aufteilen
Versuchen Sie, pro Upgrade eine Migrationsdatei zu generieren, um die Atomarität zu wahren und die Fehlerbehebung zu vereinfachen. - Ausführungszeitpunkt festlegen
Wählen SiebeforeLoad,afterSyncoderafterLoadbasierend auf den zu bearbeitenden Objekten, um Abhängigkeiten von nicht geladenen Modulen zu vermeiden. - Versionskontrolle beachten
Verwenden SieappVersion, um die für die Migration geltende Version klar zu definieren und eine wiederholte Ausführung zu verhindern. - Testabdeckung
Überprüfen Sie die Migration auf einem Mock Server, bevor Sie das Upgrade in einer realen Umgebung ausführen.

