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

如何在GraphQL服务器中查询顶级查询的子树中的片段,graphql,apollo,apollo-server,Graphql,Apollo,Apollo Server,假设存在具有以下架构的graphql服务器: query -currentUser --data1 --data2 ... 假设在您的客户端上,在应用程序的第1页,您需要数据1,第2页,您需要数据2。如果我更新数据2并希望重新提取查询,是否需要从顶层查询,解析currentUser以获取更新的数据2?唯一的解决方法是为data2创建根级别的查询吗?例如: query -currentUser --data1 --data2 -data2 (query on root of tree t

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

query
 -currentUser
 --data1
 --data2
 ...
假设在您的客户端上,在应用程序的第1页,您需要数据1,第2页,您需要数据2。如果我更新数据2并希望重新提取查询,是否需要从顶层查询,解析currentUser以获取更新的数据2?唯一的解决方法是为data2创建根级别的查询吗?例如:

query
-currentUser
--data1
--data2
-data2 (query on root of tree to avoid repeated currentUser calls)
编辑:我对如何使用Apollo client for React进行此操作感兴趣。继电器提供了一种标准方法。如果大多数对象实现其
节点
接口,则可以使用顶级
节点(id:id!)
查询来检索特定对象

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

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

如果您已经有一个命名片段,也可以这样做(其中包括一个类型匹配)你可以把它放在我有
…on User
块的地方。我不确定这个问题是否使用“fragment”作为技术术语。