universalIdentifier 定数は存在しません。 その代わりに、サーバーはそれぞれの識別子を決定論的に導出し、twenty-sdk が同じ導出処理を公開することで、マニフェストがサーバーで使用される正確な値を解決できるようにします。
システムフィールド
すべてのオブジェクトに存在し、いずれもdefineField() で宣言しないスカラー フィールドは次のとおりです。
id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
では、view で createdAt をカラムとしてどのように参照すればよいのでしょうか。
問題
Twenty 2.19 以降、システムフィールドのユニバーサル識別子は、アプリケーションのユニバーサル識別子、オブジェクトのユニバーサル識別子、およびフィールド名という 3 つの入力からサーバーによって 決定的に導出 されます。 id を独自に作成してハードコードしても機能しません。サーバー上のどの値とも一致せず、同期時にそのぶら下がった参照は拒否されます。解決策
getFieldUniversalIdentifier は twenty-sdk 2.21 以降で利用可能です。getFieldUniversalIdentifier を使用して、サーバーが使用するものとまったく同じ値を解決します。 この関数は 3 つの入力を受け取り、フィールドのユニバーサル識別子を返します。
applicationUniversalIdentifierはあなたのアプリの識別子であり、defineApplication()に渡すものです。objectUniversalIdentifierは、そのフィールドが属するオブジェクトの識別子です。nameはシステムフィールド名であり、上に挙げた値のいずれかです。
例: ビュー内の createdAt カラム
典型的なケースは、カスタムオブジェクトの 1 つのビューにcreatedAt カラムを追加することです。 フィールド id を解決し、他の fieldMetadataUniversalIdentifier と同様にそれを参照します。
src/views/example-view.ts
fieldMetadataUniversalIdentifier が必要とされるあらゆる場所、すなわちビューのフィールド、フィルター、ソート、グループ、ページレイアウトウィジェットでそのまま使用できます。
id は解決して、ハードコードしないでください。 サーバーはその値をアプリケーション id、オブジェクト id、フィールド名から導出するため、
getFieldUniversalIdentifier を呼び出すことで、それらの入力が変更された場合でも参照を正しい状態に保ち、導出方法が将来変わった場合のずれも防ぐことができます。システムリレーションフィールド
getSystemRelationFieldUniversalIdentifier は twenty-sdk
2.23 以降で利用可能であり、バージョン 2.23 以降の Twenty サーバーが必要です。timelineActivities、attachments、noteTargets、taskTargets であり、それぞれが対応する標準リレーションオブジェクトを参照します。
これらのフィールドは getFieldUniversalIdentifier では解決されません。フィールドを保持しているオブジェクトと、そのフィールドが参照するオブジェクトから、名前に依存せず識別子が導出されます。 この方法により、オブジェクトの名称を変更しても、そのリレーションフィールドの識別子は決して変わりません。
それらを解決するには、getSystemRelationFieldUniversalIdentifier を使用します。
objectUniversalIdentifierは、そのフィールドを 保持している オブジェクトです。relationTargetObjectUniversalIdentifierは、そのフィールドが 参照している オブジェクトです。
attachment.targetRocket。これは、標準リレーションオブジェクト上でサーバーが作成する morph フィールド)を解決するには、2 つを入れ替えます。
fieldMetadataUniversalIdentifier が想定されるあらゆる場所で使用できます。
システムビュー
getSystemViewUniversalIdentifier と getSystemViewFieldUniversalIdentifier は twenty-sdk 2.26 以降で利用可能であり、バージョン 2.26 以降の Twenty サーバーが必要です。All {objectLabelPlural}、キーは ViewKey.INDEX(SYSTEM_VIEW_KEYS.INDEX から導出))です。 システムリレーションフィールドと同様に、それらの識別子は 名前に依存しない 形で導出されるため、オブジェクトやフィールドの名前を変更しても識別子は変わりません。
ビューを解決するには、getSystemViewUniversalIdentifier を使用します。
objectMetadataApplicationUniversalIdentifierは オブジェクト を所有しているアプリケーションであり、ビューが名前空間分割されている単位です。objectUniversalIdentifierは、そのビューがリストするオブジェクトです。viewKeyはシステムビューを識別するための判別子です。メインのリストビューにはSYSTEM_VIEW_KEYS.INDEX、レコードページのフィールドウィジェットのビューにはSYSTEM_VIEW_KEYS.FIELDS_WIDGETを使用します。 これは導出のキーとなる値であり、ビューの行に保存されるのはINDEXのみです。
NavigationMenuItemType.VIEW のサイドバーエントリなど、viewUniversalIdentifier が必要とされるあらゆる場所で使用できます。 オブジェクトのメインリストを単に開くだけであれば、導出が不要な NavigationMenuItemType.OBJECT と targetObjectUniversalIdentifier を優先して使用してください。
getSystemViewFieldUniversalIdentifier は、ビューとそのビューが表示するフィールドから、システムビュー上の 1 つのカラムを解決します。
標準の Twenty オブジェクト
標準 の Twenty オブジェクト(Person、Company、Opportunity など)の場合、何も導出する必要はありません。フィールドおよびビューの識別子は、あらかじめ計算された定数として用意されており、直接インポートできます。defineObject() で あなたのアプリ が定義するオブジェクトのように、そのような定数が存在しない場合には、ここまでで紹介したヘルパーを使用してください。
name はシステムフィールドではなく、デフォルト フィールドです。 このフィールドは独自のハードコードされたユニバーサル識別子を持ち、getFieldUniversalIdentifier で解決されることはありません。 あなたが定義したオブジェクトでは、name フィールドは defineObject() で与えた識別子で参照してください。