このセクションについて
オブジェクト
defineObject — 固有のフィールドを持つ新しいレコードタイプを宣言します。オブジェクトの拡張
defineField — 標準オブジェクトや他のアプリのオブジェクトにフィールドを追加します。関連
オブジェクト間の双方向
MANY_TO_ONE / ONE_TO_MANY 接続。エンティティの概要
| エンティティ | 目的 | 定義方法 |
|---|---|---|
| オブジェクト | 固有のフィールドを持つ新しいカスタムレコードタイプ(例: PostCard、Invoice) | defineObject() |
| フィールド | オブジェクト上のカラム。 スタンドアロンフィールドは、作成していないオブジェクトも拡張できます(例: Company に loyaltyTier を追加) | defineField() |
| リレーション | 2 つのオブジェクト間の双方向リンク ― 両側がフィールドとして宣言されます | defineField() と FieldType.RELATION |
| インデックス | オブジェクトの 1 つに対する定期的なクエリを高速化するためのデータベースインデックス | defineIndex() |
src/objects/、src/fields/、src/indexes/ です。 安定した universalIdentifier UUID が、デプロイをまたいであらゆるものを結び付けます。
インデックス(任意)
アプリは、オブジェクトと一緒にインデックスを同梱しておくことで、繰り返し実行されるクエリを高速に保つことができます。 最も一般的なケースは、頻繁に読み取るステータス列や外部キー列です。src/indexes/post-card-status.index.ts
一意のインデックス
defineIndex は、単一列と複数列のどちらの一意性でも、isUnique: true を受け付けます。 これは推奨されるプリミティブです — defineField({ isUnique: true }) は非推奨であり、今後のリリースで削除されます。
その他の制約
- 部分的な
WHERE句は管理者の管理下にあり、アプリ側で宣言することはできません。 - 各オブジェクトにはカスタムインデックスを最大 10 個まで設定できます(フレームワーク自身のインデックスはカウントされません)。
fields 配列は、Postgres に使わせたい順序に並べてください ― 電話帳のように、最も左の列が先になります。 インデックスにはコストがかかります。テーブルへの書き込みのたびに更新されます。 必要とするクエリがある場合にのみインデックスを追加してください。