引用字段

reference 字段允许“父”文档连接到不同集合中的另一个文档。这种关系只需要在一侧定义。

一旦定义,引用文档的值将可用于父文档。

类型定义

有关所有字段类型的其他常见属性,请查看字段类型定义。
REQUIRED
type
string

将此设置为 "reference" 以使用引用字段。


REQUIRED
collections
string[]

要引用的集合。


REQUIRED
name
string

供内部使用的字段名称。

All properties marked as REQUIRED must be specified for the field to work properly.

理解引用类型

给定以下模式...

post 集合有一个指向 author 集合的 reference 字段。

在 TinaCMS 中编辑时,用户将能够为 author 的值选择 author 集合中的一个文档。

通过客户端或原始 GraphQL 查询 post 文档时,响应中的 author 键将包含引用author 文档的值:

如果您引用的集合包含大量项目,则可能会遇到超时问题。查看 FAQ - 加载引用字段时出现 503 服务不可用错误 以获取更多信息。

搜索引用

您可以根据文档文件路径搜索引用。

过滤引用

如果您有一个很长的引用项目列表,可以使用引用集合中的属性通过 ui.collectionFilter 字段在模式中过滤它们。

当前的 collectionFilter 仅支持字符串类型的属性,并且是区分大小写的。

仅显示位置设置为“澳大利亚”的作者:

自定义文档标签

默认情况下,引用选择器显示文档文件名。这可以通过 ui.optionComponent 设置为自定义 React 组件

optionComponent 函数为您提供两个参数:props_internalSys

  • props 代表引用集合中的字段。
  • _internalSys 包含各种有用的信息供您在自定义组件中使用,例如 file namepath

如果您的应用程序需要严格的类型,您需要提前手动声明 optionComponentprops 类型。请参见下面的示例。

由于这取决于您的模式,运行 console.log(props)console.log(_internalSys) 以获取可访问的完整值列表。

示例

简单字段

按多个值过滤的字段

位置设置为“澳大利亚”或“美国”的作者集合成员将被包括在内。

具有多个集合和过滤的字段

根据各自的过滤条件,将包括作者和帖子集合的成员。

具有动态过滤条件的字段

使用 ui.collectionFilter 的函数进行动态渲染,在运行时触发。

如果您传入一个函数,它应该作为可执行函数传递。直接在回调中运行类似 const url = new URL('https://bob-northwind-sydney.com') 的操作是不允许的。

具有简单自定义标签的字段

使用 optionComponent 进行自定义引用标签的简单示例。

ProfilePicture 是一个自定义组件,在示例中未包含。

具有多个集合和自定义标签的字段(高级)

下面的示例显示了一个名为 reference 的集合,与具有引用字段的作者和帖子集合相关联。ui.optionComponent 属性定义了每个文档在 UI 中的标签显示方式。

AuthorCollectionCustomReferencePostCollectionCustomReference 是示例中未包含的自定义组件。

我们还需要根据需要自行定义预期类型。

AuthorProps 接口为例,optionComponent 函数可以期望我们从 props 输入中使用的名称和描述。

_collection 字段由系统提供,用于表示特定集合(在此情况下为作者或帖子)。

Last Edited: June 17, 2026