关系

关系是一个引用字段:一条记录指向另一条记录。查询可以在同一次请求中跨它读取,字段会声明这是哪种关系,由此决定访问和删除是否沿它传递。

跨引用读取

在 GraphQL 中,引用会解析为目标记录自身的类型,因此你可以内联选取相关字段。字段可以限定只能指向哪些模型。如果允许两个或更多模型,它返回一个联合类型,用内联片段读取。在 SDK 的数据客户端中,关系需要主动开启:用 include,最多可嵌套三层。

在一次请求内,指向同一模型记录的引用会分批一起获取。默认情况下,查询最多可嵌套 24 层。

过滤与写入

列表查询可以借助引用进行过滤,使用被引用模型自己的过滤器,例如查找作者具有指定自然键的文章。写入时通过记录的自然键把引用连接到该记录,或断开连接以清除它。

关系类型

普通引用只表达结构,不会授予对其所指记录的访问权限。读取关联改变了读取方面的情况:能读取被引用记录的人,就能跨一跳读取引用它的记录。组合使子记录归父记录所有,因此访问和删除从父记录级联到子记录,并且始终是单值的。第四种类型把模型变成树,详见层级。

反向遍历

为引用命名一个inverse,目标模型就会多出一个字段,列出指向它的记录。对于组合,该字段是普通列表。对于关联,它是分页连接,接受与该模型列表查询相同的过滤、排序和分页参数。

了解详情

字段类型参考介绍了引用字段及其选项,模型配置参考涵盖关系类型。