Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在pageInfo中将总数传递给客户端_Javascript_Reactjs_Relayjs_Graphql Js - Fatal编程技术网

Javascript 如何在pageInfo中将总数传递给客户端

Javascript 如何在pageInfo中将总数传递给客户端,javascript,reactjs,relayjs,graphql-js,Javascript,Reactjs,Relayjs,Graphql Js,我在之后使用第一个,在之前使用最后一个进行分页。 hasNextPage和hasPreviousPage非常有用 但我需要的也是总计数,这样我就可以计算并在客户端上显示像第5页(共343页)这样的内容 不幸的是,这不是pageInfo的一部分,即使我在服务器站点上有这些信息 请在pageInfo中包含total字段,并扩展connectionFromArray以获取总arrayLength值,就像connectionFromArraySlice已经做的那样 感谢pageInfo旨在表示有关特定页

我在之后使用
第一个
,在
之前使用
最后一个
进行分页。
hasNextPage
hasPreviousPage
非常有用

但我需要的也是
总计数
,这样我就可以计算并在客户端上显示像
第5页(共343页)
这样的内容

不幸的是,这不是
pageInfo
的一部分,即使我在服务器站点上有这些信息

请在
pageInfo
中包含
total
字段,并扩展
connectionFromArray
以获取总
arrayLength
值,就像
connectionFromArraySlice
已经做的那样


感谢

pageInfo
旨在表示有关特定页面的信息,而项目总数实际上是连接本身的属性。我们建议在连接中添加一个
count
字段。您可以通过以下方式查询:

fragment on TodoList {
  tasks(first: 10) {
    count # <-- total number of tasks
    edges { ... }
    pageInfo { ... }
}
TodoList上的
片段{
任务(第一:10){
伯爵#谢谢你@Joe Savona

他是绝对正确的。因为我花了一点时间才弄清楚如何将属性添加到服务器站点的连接中,所以我想我在这里也分享了这一点:

var {connectionType: postsConnection} = connectionDefinitions({
  name: 'post',
  nodeType: qlPost,
  connectionFields: () => ({
    totalCount: {
      type: GraphQLInt,
      resolve: (connection) => connection.totalCount,
      description: `A count of the total number of objects in this connection, ignoring pagination.
This allows a client to fetch the first five objects by passing "5" as the
argument to "first", then fetch the total count so it could display "5 of 83",
for example.`
    }
  })
});
希望这能帮助别人


Cheers

我在连接上使用了一段时间的自定义
totalCount
字段,但它引入了一种我一开始没有看到的复杂性(在变异后更新连接时,如果要自动更新,必须使用相同的参数查询它)

因此,我在每个连接旁边都有一个
count
字段。在您的示例中,这意味着:

fragment on TodoList {
  taskCount
  tasks {
    edges { ... }
  }
}

我创建了一个为我创建的小助手:

谢谢你发布这个。你是如何为connection.totalCount分配一个值的?我的项目布局有点不同,我很难找到合适的位置来填充该值。我不知道Relay,但在Apollo中,你会使用
@connection
指令从缓存键中排除
limit
offset
等参数:这!当连接中
totalCount
位于
pageInfo
edges
旁边时,它会造成很大的复杂性。如果用户只查询
taskCount
,您可能不想查询y db用于分页任务。因此您需要将它们分开。您当然可以检查是否查询了
边缘
页面信息
,但大多数情况下都不是那么简单。如果您查看GitHub的
和spectrum/spectrum
的模式,或者Shopify的管理API,您可以看到它们使用的是完全相同的m方法。可能是为了保持事物的独立性和简化事物。