我根据组织ID列表查找组织成员。每个组织都有一个包含endCursor
成员的分页列表。由于每个endCursor
将是不同的,并且每个组织具有不同数量的成员(以及不同的页数),我如何将不同的游标作为变量传递回去?如果是这样,每个光标如何与前一个查询的组织ID相关联?
query($orgIds:[ID!]!, $page_cursor:String) { // not sure how to pass in the cursor when different length lists are returned
nodes(ids:$orgIds) {
... on Organization {
id
members(first: 100, after: $page_cursor) {
edges {
node {
id
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
我已阅读http://graphql.org/learn/pagination/,但我没有看到任何与传入相同边缘列表的多个游标相关的内容。
答案 0 :(得分:1)
我没有在graphql规范中找到有关如何为同一边缘列表提供游标数组的任何细节。 GitHub必须为此提出自定义功能。虽然我觉得这不是你想要的。
每个节点都存在一个游标,因此如果将光标字段添加到边缘请求中,您将获得请求中所有节点的游标。
edges {
cursor
node {
id
}
}
响应会变成这样:
"edges": [
{
"cursor": "Y3Vyc29yOnYyOpLOAANaVM4AA1pU",
"node": {
"id": "MDQ6VXNlcjIxOTczMg=="
}
},
请注意,如果你改变“first:100”参数让endCursor说“first:5”,那么endCursor就不一样了,因为endCursor将是5个第一个结果的最后一个节点的最后一个光标。
从游标ID到组织ID的唯一引用是从GitHub的graphql API返回的对象结构。示例中的任何游标都是特定组织的子项。
从我的角度来看,如果需要,您的客户应该记住该参考。考虑到这一点,您可能希望在进入下一个组织之前简单地遍历单个组织的页面。 (仅提供1个组织pr请求,而不是数组)。