如何在返回循环类型的突变后更新缓存?

时间:2017-05-09 23:36:12

标签: graphql apollo react-apollo

我发现的所有答案都与graphql有关。我需要知道如何使用apollographql更新客户端上的缓存。

鉴于此朋友类型和变异。

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

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

friends数组是循环的。您如何在响应中表示这一点以及如何更新客户端缓存?

1 个答案:

答案 0 :(得分:1)

如果您对某个人的朋友感兴趣,那么您的商店可能包含一堆Friend个对象(我实际上称之为Person,而friends是只是Person类型的字段。为了做突变,它应该足以提供该新朋友的每个朋友的id,除非你想在这些突变中一次创建一个人,而不是多个。

对于突变响应,只需包含每个朋友所需的数据。如果您需要每个人name的{​​{1}}和id,那么也请将其包括在内。很可能你不需要深入两级,但如果你愿意,也可以这样做。

在Apollo Client中,您实际上并不需要做任何特别的事情来将这些数据正确写入您的商店,因为Apollo Client会自动按friends字段进行规范化并仅存储每个朋友一次。因此,如果您确定已经拥有客户的所有人员,那么仅询问每个朋友的id就足够了,例如:

id