2017-07-07 75 views
2

我有一個返回項目數組的GraphQL查詢。我可以在GraphiQL中運行查詢並獲得我期望的結果。GraphQL:react-apollo客戶端覆蓋數組元素

我有一個反應應用程序,它使用react-apollo@graphql裝飾器來解析與組件道具完全相同的查詢。當通過react-apollo運行查詢時,返回數組中的每個項目都是相同的 - 每個項目已被最後一項「覆蓋」。

我可以在開發工具網絡標籤中看到正確的數組項目是通過網絡發送的,所以這個問題似乎與react-apollo有關。什麼可能導致react-apollo覆蓋數組元素?

+0

你能後的代碼? –

+0

發佈涉及GraphQL模式,服務器,反應應用程序和react-redux實現的代碼並不實際。在這種情況下,雖然我不確定這是否有必要 - 我問是否有任何可能導致此錯誤配置的常見原因。 – duncanhall

+0

既然你說GraphiQL給你預期的結果,我認爲你的服務器代碼沒有問題。問題可能在客戶端。我記得任何常見的原因。即還原劑? –

回答

2

問題是我查詢的qgl片段沒有包含數組中項目的id屬性。

如果您有類似的問題,請確保您的架構包含每個項目上的id_id屬性;每個id值都是唯一的,並且您正在請求查詢中的id屬性。或者,您可以在客戶端中提供dataIdFromObject函數以動態生成值的ID。

你可以閱讀更多阿波羅文檔爲Normalization with dataIdFromObject

+0

看起來你也會得到這種奇怪的行爲,如果'id'存在但是一個對象。我的查詢返回了一個JSON結構,如'[{「id」:{「value」:1}},{「id」:{「value」:2}}]',顯然這不起作用。我已經將數據展平並現在可以使用。 –