首页 > 解决方案 > Apollo Client 从响应对象中去除额外的结果

问题描述

我们已经像这样实现了我们的 graphql api响应

{
  data:  {...},
  skip: 0,
  limit: 10,
  total: 100,
  hasMore: true
}

如果我通过 graphiql 查询我们的 api,则响应看起来像预期的那样。但不幸的是,我们应用程序中的 apollo 客户端从返回对象中剥离了所有属性,除了data.

这是预期的行为吗?如果是这样,我该如何改变它或以不同的方式解决这个问题。我需要获取数据总量以相应地实现分页。

我知道有一种方法,fetchMore但它不会告诉我列表中的全部条目数量。

标签: graphqlapolloreact-apolloapollo-client

解决方案


根据规范,只需要三个顶级键 -data和. 如果您包含额外的密钥,您将不符合规范——我不希望任何客户尝试阅读它们。errorsextensions

归根结底,此信息应包含在您的架构中,并作为data响应的一部分返回。在其他任何地方返回它(作为响应中的附加键,作为响应标头等)是一个坏主意,如果没有其他原因,除了你可以在根级别有多个查询字段,在这种情况下你会只能传达有关其中一个字段的分页信息,并且不清楚该信息应用于哪个字段。如果您有也可以分页的嵌套字段,也可以这样说。


推荐阅读