このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
Migration(マイグレーション)アップグレードスクリプト
NocoBaseのプラグイン開発やアップデートを行う際、プラグインのデータベース構造や設定に互換性のない変更が生じることがあります。このような変更があってもスムーズにアップグレードできるよう、NocoBaseはMigration(マイグレーション)の仕組みを提 供しており、マイグレーションファイルを記述することでこれらの変更を処理します。この記事では、Migrationの利用方法と開発フローについて体系的に解説します。
Migration(マイグレーション)の概念
Migrationは、プラグインのアップグレード時に自動的に実行されるスクリプトで、主に以下の問題を解決するために利用されます。
- データテーブルの構造調整(フィールドの追加、フィールドタイプの変更など)
- データ移行(フィールド値の一括更新など)
- プラグインの設定や内部ロジックの更新
Migrationの実行タイミングは、以下の3つのタイプに分類されます。
Migration(マイグレーション)ファイルの作成
Migrationファイルは、プラグインディレクトリ内の src/server/migrations/*.ts に配置する必要があ ります。NocoBaseは、create-migration コマンドを提供しており、このコマンドを使ってMigrationファイルを素早く生成できます。
オプションパラメーター
例
生成されるMigrationファイルのパスは以下の通りです。
ファイルの初期内容:
⚠️
appVersionは、アップグレードの対象となるバージョンを識別するために使用されます。指定されたバージョンよりも古い環境でこのMigrationが実行されます。
Migration(マイグレーション)の記述
Migrationファイル内では、this を通じて以下のよく使われるプロパティやAPIにアクセスできます。これらを利用することで、データベース、プラグイン、アプリケーションインスタンスを簡単に操作できます。
よく使われるプロパティ
-
this.app
現在のNocoBaseアプリケーションインスタンスです。グローバルサービス、プラグイン、または設定へのアクセスに利用できます。 -
this.db
データベースサービスインスタンスです。モデル(コレクション)を操作するためのインターフェースを提供します。 -
this.plugin
現在のプラグインインスタンスです。プラグインのカスタムメソッドへのアクセスに利用できます。 -
this.sequelize
Sequelizeインスタンスです。生のSQLやトランザクション操作を直接実行できます。 -
this.queryInterface
SequelizeのQueryInterfaceです。フィールドの追加やテーブルの削除など、テーブル構造の変更によく利用されます。
Migrationの記述例
上記で挙げた一般的なプロパティの他にも、Migrationは豊富なAPIを提供しています。詳細なドキュメントについては、Migration API をご参照ください。
Migration(マイグレーション)のトリガー
Migrationの実行は、nocobase upgrade コマンドによってトリガーされます。
アップグレード時、システムはMigrationのタイプと appVersion に基づいて実行順序を決定します。
Migration(マイグレーション)のテスト
プラグイン開発においては、Mock Server(モックサーバー) を使用してMigrationが正しく実行されるかテストすることをお勧めします。これにより、実際のデータを破損するリスクを避けることができます。
Tip: Mock Serverを利用すると、アップグレードシナリオを素早くシミュレートし、Migrationの実行順序やデータ変更を検証できます。
開発プラクティスに関する推奨事項
- Migrationの分割
アップグレードごとに1つのMigrationファイルを生成するように心がけ、原子性を保つことで、問題の特定と解決が容易になります。 - 実行タイミングの指定
操作対象に応じてbeforeLoad、afterSync、afterLoadを選択し、未ロードのモジュールへの依存を避けてください。 - バージョン管理への注意
appVersionを使用して、Migrationが適用されるバージョンを明確に指定し、重複実行を防ぎましょう。 - テストカバレッジ
Mock ServerでMigrationを検証した後、実際の環境でアップグレードを実行してください。

