如何在GraphQL服务器中查询顶级查询的子树中的片段

时间:2018-08-21 17:39:35

标签: graphql apollo apollo-server

假设存在一个具有以下架构的graphql服务器:

query
 -currentUser
 --data1
 --data2
 ...

假设在客户端上,应用程序的第1页上需要data1,第2页上则需要data2。如果我更新data2并想重新获取查询,是否需要从顶层查询,解析currentUser才能获取更新的data2?解决此问题的唯一方法是为data2创建根级查询吗?例如:

query
-currentUser
--data1
--data2
-data2 (query on root of tree to avoid repeated currentUser calls)

编辑:我对如何使用Apollo-client for React做到这一点

1 个答案:

答案 0 :(得分:0)

中继top-level node query提供了执行此操作的标准方法。如果大多数对象都实现了其Node接口,那么您可以使用顶级node(id: ID!)查询来检索特定对象。

query GetFirstDatum {
  currentUser {
    id
    data1
  }
}
query GetSecondDatum($id: ID!) {
  node(id: $id) {
    ... on User {
      data2
    }
  }
}

这需要在IDL中提供Node接口,让您的对象实现它,并提供顶级node查询的实现,该查询可以返回给定对象ID的对象。大多数服务器库对此都有一定程度的支持。