2016-07-14 43 views
1

我幾乎完成了NodeJS https://github.com/nodkz/graphql-compose-connection的包,允許爲graphql-compose構建的graphql類型構建連接類型。GraphQL Connections for Relay有什麼限制?

這個軟件包完全地遵循具有很好的補充繼電器光標連接規範(https://facebook.github.io/relay/graphql/connections.htm):filter ARG(用於過濾的記錄)和sort ARG(用於通過唯一索引排序的記錄)。

瞭解光標的獨特性所以我以下的問題:

1)如果光標是不同類型之間的獨特之處?

2)如果光標是唯一的具有不同ARGS一個連接中?

例如,在UserConnection中我有過濾器參數。我希望在第一個列表中顯示所有用戶,在第二個列表中顯示在線用戶(在頁面上同時顯示兩個列表)。一個具有相同光標的用戶可能存在於這兩個列表中。

3)如果繼電器得到類似遊標連接於一體,將它拋出的錯誤?

4)應該是遊標base64編碼,或者它可能包含字符串化的json對象?

回答

1

1)如果光標是不同類型之間的獨特之處?

如果這裏你的問題是「應該光標是全球唯一」,答案是否定的。它們不像身份證,在繼電器中必須是全球唯一的,以便於重讀(用於差異)。遊標可以像「100」或「101」一樣簡單,但在實踐中通常包含更多描述性和/或結構化的東西。

2)在不同參數的連接中,光標應該是唯一的嗎?

例如,在UserConnection中我有過濾器參數。我想在第一個列表中顯示所有用戶 ,在第二個列表中顯示所有用戶(在頁面上同時顯示兩個列表 )。一個具有相同光標的用戶可能存在於這兩個列表中。

這是一個特定於實現的事情。光標的要點是啓用分頁,其內容是任意的。簡單地說,它應該包含足夠的信息以及關於連接的其他參數,以使服務器上的GraphQL模式能夠確定下一個(after)或之前(before)頁面應返回的內容。

3)如果繼電器得到類似遊標連接於一體,將它拋出的錯誤?

我不確定是否會,但你可以嘗試一下,找出答案。即使它沒有拋出錯誤,也可能沒有任何意義。遊標的目的是讓你指定一個分頁的相對起始點,所以如果光標「x」出現在連接的兩個不同位置,「x之後的前10個」是什麼意思?

4)應該是遊標base64編碼,或者它可能包含字符串化的json對象?

Base64是我們按慣例做的事情,不是因爲它是強制的,爲了更清楚地說明遊標應該被認爲是不透明的令牌,其內部結構不應該被依賴。它們是特定於實現的。所以,我相信你可以使用一個JSON字符串,但是Base64對它進行編碼會有一些好處。

+0

免責聲明:我致力於繼電器,而不是GraphQL,但我已經盡我所能解答了這些問題。 – wincent

+0

非常感謝。您的免責聲明是我的要求;)我需要Relay團隊的答覆,您沒有使用Relay中的「遊標」進行特定操作。因此https://github.com/nodkz/graphql-compose-connection已準備好生產。 – nodkz

相關問題