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