2017-05-09 3 views
1

私が見つけたすべての答えは、graphqlに関連しています。 apollographqlを使ってクライアント上のキャッシュを更新する方法を知る必要があります。循環型を返す突然変異の後でどのようにキャッシュを更新しますか?

このフレンドタイプと突然変異が与えられました。

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

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

友人の配列は円形です。これをレスポンスでどのように表現し、どのようにクライアントのキャッシュを更新しますか?

答えて

1

あなたが特定の人の友人に興味があるなら、あなたの店は、おそらく(私は実際にPerson彼らを呼ぶだろう、とfriendsPersonタイプの単なるフィールドです)Friendオブジェクトの束が含まれています。突然変異を行うためには、これらの突然変異で一度に1人だけでなく、複数のものを作成しない限り、その新しい人の各友人のidを提供するのに十分でなければなりません。

突然変異の反応については、各友人に必要なデータだけを入れてください。人物のそれぞれnameidが必要な場合は、その人物も含めてください。friendsほとんどの場合、2つのレベルを深くする必要はありませんが、そうしたい場合は、同様に行うことができます。

Apollo Clientでは、idフィールドで自動的に正規化され、各フレンズを1回だけ保存するため、実際にこのデータを店舗に正しく書き込むために特別な処理を行う必要はありません。あなたが既にクライアントにすべての人物を持っていることを確信しているならば、各友達のidだけを聞くだけで十分でしょう。例えば、

{ 
    createFriend(friends: [{ name: 'Joe', friends: [{ id: 1}, {id: 4}] }]) { 
    id 
    name 
    friends { 
     id 
     name 
    } 
    } 
} 
関連する問題