id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
由于你不会使用 defineField() 来声明这些字段,因此也没有可供你导入的 universalIdentifier 常量。 那么,如何在视图中将 createdAt 作为一列来引用呢?
问题
从 Twenty 2.19 起,系统字段的通用标识符由服务器根据三个输入确定性派生:应用通用标识符、对象通用标识符以及字段名称。 自行构造一个 id 并将其硬编码是行不通的:它在服务器上不会匹配任何内容,同步时会拒绝这个悬空引用:解决方案
getFieldUniversalIdentifier 从 twenty-sdk 2.21 版本开始可用。getFieldUniversalIdentifier 来解析与服务器使用的值完全相同的字段标识符。 它接收这三个输入,并返回字段的通用标识符:
applicationUniversalIdentifier是你的应用标识符,也就是你传递给defineApplication()的那个。objectUniversalIdentifier是该字段所属对象的标识符。name是系统字段名称,为上面列出的值之一。
示例:视图中的 createdAt 列
典型场景是:为你某个自定义对象的视图添加一列createdAt。 解析字段 id,并像引用其他 fieldMetadataUniversalIdentifier 一样引用它:
src/views/example-view.ts
fieldMetadataUniversalIdentifier 的地方使用:视图字段、筛选器、排序、分组以及页面布局挂件。
解析 id,而不是将其硬编码。 由于服务器是根据应用 id、对象 id 和字段名来派生该值的,调用
getFieldUniversalIdentifier 能在这些输入发生变化时仍保持引用正确,并在派生逻辑演进时避免偏差。标准 Twenty 对象
对于标准 Twenty 对象(Person、Company、Opportunity 等),你不需要进行任何派生:系统字段标识符是预先计算好的常量,你可以直接导入。defineObject() 定义、且不存在此类常量时,再使用 getFieldUniversalIdentifier。
name 是一个默认字段,而不是系统字段。 它保留自己的硬编码
通用标识符,而不是通过
getFieldUniversalIdentifier 解析。 在你定义的对象上,请使用你在 defineObject() 中赋予它的标识符来引用
name 字段。