リレーションの仕組み
すべてのリレーションには、互いを参照する2 つのフィールドが必要です:- MANY_TO_ONE 側 — 外部キーを保持するオブジェクト側に存在します。
- ONE_TO_MANY 側 — コレクションを所有するオブジェクト側に存在します。
FieldType.RELATION を使用し、relationTargetFieldMetadataUniversalIdentifier を介して相互参照します。
例: PostCard は多数の Recipient を持つ
PostCard は多数の PostCardRecipient レコードに送信できます。 各受取人は厳密に 1 件の PostCard に属します。
ステップ 1: PostCard に ONE_TO_MANY 側を定義(「1」の側):
src/fields/post-card-recipients-on-post-card.field.ts
src/fields/post-card-on-post-card-recipient.field.ts
循環インポート: 両方のリレーションフィールドは互いの
universalIdentifier を参照します。 循環インポートの問題を避けるため、各ファイルからフィールド ID を名前付き定数としてエクスポートし、相手のファイルでインポートしてください。 ビルドシステムがコンパイル時にこれらを解決します。標準オブジェクトとのリレーション
組み込みの Twenty オブジェクト(Person、Company など)とリレーションを作成するには、STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS を使用します:
src/fields/person-on-self-hosting-user.field.ts
リレーションフィールドのプロパティ
インラインのリレーションフィールド
defineObject の中で、リレーションを直接宣言することもできます。 インラインで宣言する場合は、objectUniversalIdentifier を省略します — 親オブジェクトから継承されます: