关系
如果你数据库中的表/视图已连接,关系则能够支持发出嵌套对象查询。
GraphQL 模式关系可以是
- 对象关系(一对一)
- 阵列关系(一对多)
对象关系
比如说,你希望查询todos
以及有关创建它的user
的更多信息。 如果两者之间存在某种关系,则可以使用嵌套查询来实现。 这是一对一查询,因此叫作对象关系。
此类嵌套查询的示例如下所示:
query {todos {idtitleuser {idname}}}
在单个查询中,你能够获取待办事项及其相关的用户信息。 由于你可以嵌套到任何层级,所以非常强大。
阵列关系
我们看一下阵列关系的查询示例。
query {users {idnametodos {idtitle}}}
在这条查询中,你能够获取用户,并为每个用户获取其编写的待办事项(多个)。 由于用户可以拥有多个待办事项,因此这是阵列关系。
可以通过外键约束捕获关系。 外键约束可确保没有悬挂数据。 Hasura 控制台根据这些约束自动建议关系。
虽然约束是可选的,但还是建议强制执行这些约束,以确保数据一致性。
上述查询还不能发挥作用,因为我们尚未定义关系。 但这有助于我们了解嵌套查询的运作原理。
Did you find this page helpful?
Start with GraphQL on Hasura for Free
Build apps and APIs 10x faster
Built-in authorization and caching
8x more performant than hand-rolled APIs

