2017-05-09 20 views
1

我發現的所有答案都與graphql有關。我需要知道如何使用apollographql更新客戶端上的緩存。如何在返回循環類型的變量之後更新緩存?

鑑於此朋友類型和變異。

type Friend { 
    id: String 
    name: String 
    friends: [Friend] 
} 

type Mutation { 
    createFriend (
    friends: [FriendInput] 
): [Friend] 
} 

朋友數組是圓形的。你如何在響應中表示這一點,以及如何更新客戶端緩存?

回答

1

如果你有興趣在一個特定的人的朋友,你的店很可能包含了一些Friend對象(我真的叫他們Person,並friends是在Person類型只是一個字段)。爲了進行突變,除非你想在這些突變中一次創建一個人,而是多次創建新人的每個朋友,否則應該足以提供該id

對於突變響應,只需包含您需要爲每個朋友提供的數據。如果你需要每個人friendsnameid,那麼也包括這個。很可能你不需要深入兩層,但如果你願意,你也可以做到這一點。

在Apollo客戶端中,您實際上不需要做任何特殊的事情就可以將此數據正確寫入您的商店,因爲Apollo客戶端會自動按id字段進行規範化處理,並將每個朋友存儲一次。因此,如果您確定您已擁有客戶上的所有人員,則只需要詢問每位朋友的id即可,例如:

{ 
    createFriend(friends: [{ name: 'Joe', friends: [{ id: 1}, {id: 4}] }]) { 
    id 
    name 
    friends { 
     id 
     name 
    } 
    } 
}