引用字段
reference 字段允许“父”文档连接到不同集合中的另一个文档。这种关系只需要在一侧定义。
一旦定义,引用文档的值将可用于父文档。
类型定义
有关所有字段类型的其他常见属性,请查看字段类型定义。
将此设置为 "reference" 以使用引用字段。
要引用的集合。
供内部使用的字段名称。
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 name和path。
如果您的应用程序需要严格的类型,您需要提前手动声明
optionComponent的props类型。请参见下面的示例。
由于这取决于您的模式,运行console.log(props)或console.log(_internalSys)以获取可访问的完整值列表。
示例
简单字段
按多个值过滤的字段
位置设置为“澳大利亚”或“美国”的作者集合成员将被包括在内。
具有多个集合和过滤的字段
根据各自的过滤条件,将包括作者和帖子集合的成员。
具有动态过滤条件的字段
使用 ui.collectionFilter 的函数进行动态渲染,在运行时触发。
如果您传入一个函数,它应该作为可执行函数传递。直接在回调中运行类似
const url = new URL('https://bob-northwind-sydney.com')的操作是不允许的。
具有简单自定义标签的字段
使用 optionComponent 进行自定义引用标签的简单示例。
ProfilePicture 是一个自定义组件,在示例中未包含。
具有多个集合和自定义标签的字段(高级)
下面的示例显示了一个名为 reference 的集合,与具有引用字段的作者和帖子集合相关联。ui.optionComponent 属性定义了每个文档在 UI 中的标签显示方式。
AuthorCollectionCustomReference 和 PostCollectionCustomReference 是示例中未包含的自定义组件。
我们还需要根据需要自行定义预期类型。
以 AuthorProps 接口为例,optionComponent 函数可以期望我们从 props 输入中使用的名称和描述。
_collection 字段由系统提供,用于表示特定集合(在此情况下为作者或帖子)。