2017-06-06 114 views
2

我正在查找组织成员基于组织ID的列表。每个组织都有一个带有endCursor的成员分页列表。由于每个endCursor会有所不同,每个组织拥有不同数量的成员(以及不同数量的页面),因此如何将不同的游标作为变量传回?如果是这样,每个游标如何与前一个查询中的组织ID相关联?将多个游标作为变量传递给GitHub GraphQL API?

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/但我没有看到相关的多个游标通过为同一边缘名单什么。

回答

1

我还没有在graphql规范中找到关于如何为相同边列表提供游标数组的细节。 GitHub必须为此提供一个自定义功能。虽然我有一种感觉,它不是你想要的。

每个节点都有一个游标,所以如果您将游标字段添加到您的边请求中,您将获得请求中所有节点的游标。

edges { 
    cursor 
    node { 
     id 
    } 
} 

响应会变得这样的事情:

"edges": [ 
    { 
     "cursor": "Y3Vyc29yOnYyOpLOAANaVM4AA1pU", 
     "node": { 
     "id": "MDQ6VXNlcjIxOTczMg==" 
     } 
    }, 

请注意,endCursor是不一样的,如果你改变了“第一:100”参数来让我们说“第一次:5”,因为endCursor将是5个第一个结果的最后一个节点的最后一个光标。

从光标ID到您的组织结构ID的唯一参考是从GitHub的graphql API返回的对象的结构。您示例中的任何光标都是特定组织的子项。

从我的观点来看,如果事后需要的话,请记住参考。考虑到这一点,在进入下一个组织之前,您可能只需遍历单个组织的页面。 (只提供1个组织请求,而不是数组)。