2017-06-06 116 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個組織請求,而不是數組)。