Skip to main content
Twenty 应用的 数据层(data layer) 是你的应用添加到工作区中的数据——它声明的新记录类型、它为现有对象添加的列,以及这些记录之间如何相互关联。

本节内容

对象

defineObject —— 声明具有自有字段的新记录类型。

扩展对象

defineField —— 向标准对象或其他应用的对象添加字段。

关系

对象之间的双向 MANY_TO_ONE / ONE_TO_MANY 连接。

实体一览

SDK 会在构建时通过 AST 分析检测这些内容,因此文件组织方式由你决定——约定是使用 src/objects/src/fields/src/indexes/。 稳定的 universalIdentifier UUID 在不同部署之间将一切关联在一起。

索引(可选)

应用可以随对象一同提供索引,以确保经常执行的查询保持快速。 最常见的情况是某个你经常读取的状态列或外键列。
src/indexes/post-card-status.index.ts

唯一索引

defineIndex 接受 isUnique: true,可同时用于单列和多列表达唯一性约束。 这是推荐的基础方式——defineField({ isUnique: true }) 已被弃用,并将在未来的版本中移除。

其他约束

  • 部分 WHERE 子句由管理员控制——应用无法声明它们。
  • 每个对象最多只能有 10 个自定义索引(框架自身的索引不计入其中)。
按照 Postgres 使用索引的方式来排列 fields 数组——最左边的列放在最前面,就像电话簿一样。 索引不是免费的:对表的每一次写入都会更新索引。 只有当你确实有查询需要某个索引时才添加它。
在找 Application ConfigRoles & Permissions 吗? 这些描述的是应用本身而不是它添加的数据——相关内容位于 Config 下。 在找 Connections(Linear、GitHub、Slack OAuth)吗? 这些用于逻辑函数中调用,并位于 Logic 下。