2017-06-06 7 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 
    } 
} 

応答は次のようになる:さんが言うようにする:「100最初の」パラメータを変更場合endCursorは同じではないことに注意してください

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

「最初:5」、endCursorので、 5つの最初の結果の最後のノードの最後のカーソルになります。

カーソルIDからガイダンスIDまでの参照は、GitHubのgraphql APIから返されるオブジェクトの構造だけです。あなたの例にあるカーソルは、特定の組織の子です。

私の観点からは、後で必要に応じてその参照を覚えておくことはお客様のクライアントに任せます。これを念頭に置いて、単一の組織のページを繰り返して、次のページに進むことができます。 (1つの組織のpr要求のみを提供し、アレイは供給しない)。

関連する問題