Apollo 的 GraphQL 中继连接规范

GraphQL Relay Connections Specification for Apollo

我正在尝试在 Apollo 中实现中继连接,但我在规范方面遇到了一些问题。

架构如下所示:

type PageInfo {
  startCursor: String!,
  endCursor: String!,
  hasNextPage: Boolean!,  
  hasPreviousPage: Boolean!
}

type User : Node {
  id: ID!
  firstname: String
  lastname: String
}

type UserConnection : Connection {
  pageInfo: PageInfo!
  edges: [UserEdge!]!
}

type UserEdge : Edge {
  cursor: String!
  node: User!
}

extend type Query {
  users(first: Int, after: ID, order: String): UserConnection
}

假设我在数据库中有 100 个用户; 当我使用 limit ex.users(first: 10) 查询时,PageInfo.endCursor 指的是第 10 条边还是第 100 条边?

更多问题:

1.Should 我再次查询以获取 hasPreviousPage、hasNextPage。

2.Are 是否有结构相似的代码示例(带有解析器)?

3.Are 有任何 graphql 聊天(gitter,irc)吗?

endCursor指的是第10个,即等于结果中最后一条边的游标字段

  1. 一般来说,像这样的基于光标的分页不是双向的。所以你不可能同时知道 hasNextPagehasPreviousPage。但是无论你获取哪个,你都不需要在另一个查询中发出它,在一个查询中获取尽可能多的数据,这就是重点!

  2. Relay 分页的例子一定有很多,我脑子里想不出来了。

  3. Apollo 和 GraphQL 本身都有一个松散的团队。 apollographql.slack.comgraphql.slack.com