Collections データテーブル
NocoBase のプラグイン開発において、Collection(データテーブル) は最も核となる概念の一つです。Collection を定義または拡張することで、プラグイン内でデータテーブル構造を追加・変更できます。「データソース管理」画面で作成するデータテーブルとは異なり、コードで定義された Collection は通常、システムレベルのメタデータテーブルであり、データソース管理のリストには表示されません。
データテーブルの定義
規約に基づいたディレクトリ構造に従い、Collection ファイルは ./src/server/collections ディレクトリに配置します。新しいテーブルを作成するには defineCollection() を、既存のテーブルを拡張するには extendCollection() を使用します。
上記の例では、
name:テーブル名(データベースに同名のテーブルが自動生成されます)。title:このテーブルの画面上での表示名称です。fields:フィールドの集合で、各フィールドにはtype、nameなどの属性が含まれます。
他のプラグインの Collection にフィールドを追加したり、設定を変更したりする必要がある場合は、extendCollection() を使用できます。
プラグインを有効化すると、システムは既存の articles テーブルに isPublished フィールドを自動的に追加します。
規約に基づいたディレクトリは、すべてのプラグインの load() メソッドが実行される前に読み込みが完了します。これにより、一部のデータテーブルが読み込まれていないことによる依存関係の問題を回避できます。
フィールドタイプ早見表
defineCollection の fields において、type はフィールドのデータベース上のカラム型を決定します。以下は組み込みのフィールドタイプの一覧です。
テキスト
数値
ブール値
日付時刻
date は最もよく使われる日付型です。タイムゾーンの扱い方を区別する必要がある場合は、datetimeTz(タイムゾーン付き)と datetimeNoTz(タイムゾーンなし)も選択できます。
構造化データ
ID 生成
特殊型
リレーション型
リレーションフィールドはデータベースカラムを作成せず、ORM レイヤーでテーブル間の関係を構築します。
リレーションフィールドの使用例:
共通パラメータ
すべてのカラムフィールドは以下のパラメータをサポートしています。
データベース構造の同期
プラグインが初めて有効化される際、システムは Collection の設定とデータベース構造を自動的に同期します。プラグインがすでにインストールされて実行中の場合、Collection を追加または変更した後は、手動でアップグレードコマンドを実行する必要があります。
プラグインのアップグレード時に既存データの移行が必要な場合――フィールド名の変更、テーブルの分割、デフォルト値の埋め戻しなど――は、データベースを手動で変更するのではなく、Migration アップグレードスクリプト で対応してください。
Collection を UI のデータテーブルリストに表示する
defineCollection で定義されたテーブルはサーバー側の内部テーブルであり、デフォルトでは「データソース管理」のリストにも、「ブロックを追加」する際のデータテーブル選択リストにも表示されません。
推奨方法:NocoBase の画面上の「データソース管理」からデータテーブルを追加し、フィールドとインターフェースタイプを設定すれば、ブロックのデータテーブル選択リストに自動的に表示されるようになります。


