基于Prisma光标的分页

时间:2018-06-21 06:32:19

标签: graphql prisma

刚刚完成了有关构建基于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不适合用户对象。

2 个答案:

答案 0 :(得分:0)

您可以查询与用户相关的linksConnection,因此可以访问游标:

{
  linksConnection(where:{user:{id:"cjimzqrshb3nf0c29z1p7km0j"}}){
     pageInfo{
       endCursor
       startCursor
     }
     edges{
       cursor
     }
  }
}

答案 1 :(得分:0)

您可以像这样用Prisma实现基于光标的分页:

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

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

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

{
  users{
    links(first: 10, skip: 30) {
      description
    }
  }
}