1

刚刚完成了关于构建基于 Prisma 的 graphql 后端的优秀教程。他们在https://www.howtographql.com/graphql-js/8-filtering-pagination-and-sorting/解释了如何实现首偏移分页。

现在我想知道,如何实现基于光标的分页?

这是我的类型(它们与教程中的相同):

type User
    implements Node {
    id: ID!
    name: String!
    email: String!
    password: String!
    links(...): [Link!]
    votes(...): [Vote!]
}

type Link
    implements Node {
    id: ID!
    createdAt: DateTime!
    description: String!
    url: String!
    postedBy(...): User
    votes(...): [Vote!]
}

在操场上,我试图查询用户信息以及用户创建的链接:

{
  user(where: {id:"cjimzqrshb3nf0c29z1p7km0j"}) {
    email
    links {
      id
      url
      description
    }
  }
}

它给了我所有由用户创建的链接。我怎样才能对它们进行分页?Links 对象没有分页信息,而 linksConnection 不适合用户对象。

4

2 回答 2

0

您可以使用 Prisma 实现基于光标的分页,如下所示:

{
  users{
    links(first: 10, after:"some-id") {
      description
    }
  }
}

这是可能的,因为 id 和 cursor 是相同的。

或者,您可以像这样使用基于偏移的分页:

{
  users{
    links(first: 10, skip: 30) {
      description
    }
  }
}
于 2018-06-24T13:40:46.237 回答
0

您可以查询与用户相关的 linksConnection,从而访问 cursors :

{
  linksConnection(where:{user:{id:"cjimzqrshb3nf0c29z1p7km0j"}}){
     pageInfo{
       endCursor
       startCursor
     }
     edges{
       cursor
     }
  }
}
于 2018-06-21T08:44:31.103 回答