id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
defineField() でこれらのフィールドを宣言しないため、インポートできる universalIdentifier 定数は存在しません。 では、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 を呼び出すことで、それらの入力が変更された場合でも参照を正しい状態に保ち、導出方法が将来変わった場合のずれも防ぐことができます。標準の Twenty オブジェクト
標準 の Twenty オブジェクト(Person、Company、Opportunity など)の場合、何も導出する必要はありません。システムフィールドの識別子はあらかじめ計算された定数として用意されており、直接インポートできます。defineObject() で あなたのアプリ が定義するオブジェクトのように、そのような定数が存在しない場合にこそ、getFieldUniversalIdentifier を使用してください。
name はシステムフィールドではなく、デフォルト フィールドです。 このフィールドは独自のハードコードされたユニバーサル識別子を持ち、getFieldUniversalIdentifier で解決されることはありません。 あなたが定義したオブジェクトでは、name フィールドは defineObject() で与えた識別子で参照してください。