关系

如果你数据库中的表/视图已连接,关系则能够支持发出嵌套对象查询。

GraphQL 模式关系可以是

  • 对象关系(一对一)
  • 阵列关系(一对多)

对象关系

比如说,你希望查询todos以及有关创建它的user的更多信息。 如果两者之间存在某种关系,则可以使用嵌套查询来实现。 这是一对一查询,因此叫作对象关系。

此类嵌套查询的示例如下所示:

query {
todos {
id
title
user {
id
name
}
}
}

在单个查询中,你能够获取待办事项及其相关的用户信息。 由于你可以嵌套到任何层级,所以非常强大。

阵列关系

我们看一下阵列关系的查询示例。

query {
users {
id
name
todos {
id
title
}
}
}

在这条查询中,你能够获取用户,并为每个用户获取其编写的待办事项(多个)。 由于用户可以拥有多个待办事项,因此这是阵列关系。

可以通过外键约束捕获关系。 外键约束可确保没有悬挂数据。 Hasura 控制台根据这些约束自动建议关系。

虽然约束是可选的,但还是建议强制执行这些约束,以确保数据一致性。

上述查询还不能发挥作用,因为我们尚未定义关系。 但这有助于我们了解嵌套查询的运作原理。

Did you find this page helpful?
Start with GraphQL on Hasura for Free
  • ArrowBuild apps and APIs 10x faster
  • ArrowBuilt-in authorization and caching
  • Arrow8x more performant than hand-rolled APIs
Promo
footer illustration
Brand logo
© 2024 Hasura Inc. All rights reserved
Github
Titter
Discord
Facebook
Instagram
Youtube
Linkedin