【问题标题】:Pass in multiple cursors as variables to GitHub GraphQL API?将多个游标作为变量传递给 GitHub GraphQL API?
【发布时间】:2017-11-07 00:09:18
【问题描述】:

我正在根据组织 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/,但我没有看到与为同一个边缘列表传递多个游标相关的任何内容。

【问题讨论】:

    标签: github-api graphql


    【解决方案1】:

    我在 graphql 规范中没有找到任何关于如何为同一边缘列表提供游标数组的详细信息。 GitHub 必须为此提供自定义功能。虽然我有一种感觉,但它并不是您想要的。

    每个节点都存在一个游标,因此如果您在边缘请求中添加游标字段,您将获得请求中所有节点的游标。

    edges {
        cursor
        node {
            id
        }
    }
    

    响应会变成这样:

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

    请注意,如果您将“first:100”参数更改为“first:5”,则 endCursor 是不一样的,因为 endCursor 将是 5 个第一个结果中最后一个节点的最后一个光标。

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

    在我看来,如果以后需要,您的客户需要记住该参考。考虑到这一点,您可能希望在转到下一个组织之前简单地遍历单个组织的页面。 (仅提供 1 个组织 pr 请求,而不是数组)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 2020-05-26
      • 2017-08-22
      • 2020-09-30
      • 2021-11-06
      • 2020-05-05
      相关资源
      最近更新 更多