Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na anglickou verzi
Během vývoje a aktualizací pluginů NocoBase může dojít k nekompatibilním změnám v databázové struktuře nebo konfiguraci pluginu. Pro zajištění hladkého průběhu upgradu NocoBase nabízí mechanismus Migrace, který tyto změny řeší pomocí migračních souborů. Tento článek vás systematicky provede používáním Migrace a jejím vývojovým procesem.
Migrace je skript, který se automaticky spouští během upgradů pluginů a slouží k řešení následujících problémů:
Doba spuštění Migrace se dělí do tří kategorií:
| Typ | Spouštěcí čas | Scénář spuštění |
|---|---|---|
beforeLoad | Před načtením všech konfigurací pluginů | |
afterSync | Po synchronizaci konfigurací kolekcí s databází (struktura kolekce již byla změněna) | |
afterLoad | Po načtení všech konfigurací pluginů |
Migrační soubory by měly být umístěny v adresáři pluginu pod src/server/migrations/*.ts. NocoBase poskytuje příkaz create-migration pro rychlé generování migračních souborů.
Volitelné parametry
| Parametr | Popis |
|---|---|
--pkg <pkg> | Určuje název balíčku pluginu |
--on [on] | Určuje dobu spuštění, možnosti: beforeLoad, afterSync, afterLoad |
Příklad
Cesta k vygenerovanému migračnímu souboru:
Počáteční obsah souboru:
⚠️
appVersionslouží k identifikaci verze, na kterou se upgrade zaměřuje. Prostředí s verzemi nižšími než specifikovaná verze tuto migraci spustí.
V migračních souborech můžete prostřednictvím this přistupovat k následujícím běžným vlastnostem a API, což usnadňuje práci s databází, pluginy a instancemi aplikace:
Běžné vlastnosti
this.app
Aktuální instance aplikace NocoBase. Lze použít pro přístup ke globálním službám, pluginům nebo konfiguraci.
this.db
Instance databázové služby, poskytuje rozhraní pro práci s modely (kolekcemi).
this.plugin
Aktuální instance pluginu, lze použít pro přístup k vlastním metodám pluginu.
this.sequelize
Instance Sequelize, může přímo provádět nativní SQL nebo transakční operace.
this.queryInterface
QueryInterface Sequelize, běžně se používá k úpravě struktur tabulek, například k přidávání polí, mazání tabulek atd.
Příklad psaní migrace
Kromě výše uvedených běžných vlastností poskytuje Migrace také bohaté API. Podrobnou dokumentaci naleznete v Migration API.
Spuštění Migrace je vyvoláno příkazem nocobase upgrade:
Během upgradu systém určí pořadí spuštění na základě typu Migrace a appVersion.
Při vývoji pluginů se doporučuje použít Mock Server k otestování, zda se migrace provádí správně, aby nedošlo k poškození skutečných dat.
Tip: Použití Mock Serveru může rychle simulovat scénáře upgradu a ověřit pořadí spuštění Migrace a změny dat.
beforeLoad, afterSync nebo afterLoad na základě objektů operace, abyste se vyhnuli závislosti na nenačtených modulech.appVersion k jasnému určení verze, pro kterou je migrace určena, abyste zabránili opakovanému spuštění.