假设我有一个具有People
和Parties
的GraphQL模型。
这样的事情:
Person {
name: String
parties: PartyConnection
}
Party {
place: String
dateTime: String
people: PeopleConnection
}
我可以查看一个Person
并查看他们将要访问的Parties
,然后由Relay缓存。
我也可以做一个突变来创建一个新派对,增加一些人。如何确保我添加到聚会中的每个人都在缓存中失效,这样当我导航到该人的页面时,我会在刚刚添加的聚会中看到它们。
突变的有效载荷类似于:
fragment on CreatePartyMutationPayload {
party
partyMembers - not sure what type this should be, an array of ids?
}
我需要告诉Relay,所有getConfigs
和/或有效负载结构是PartyMembers数组中的每个人都需要让缓存中的各方字段无效?
此外,可能有一些服务器端规则,如果我邀请一个人,他们的合作伙伴也会自动被邀请。这意味着我没有明确的Person
ID列表,这些列表将在客户端变异对象中失效,直到有效负载返回为止。如何确保Payload中聚会中的所有人都无效?
答案 0 :(得分:0)
一个人只能参加一个派对,或者一个人可以参加多方派对吗?我问这个因为你使用了失效这个词。如果一个人可以参加多方,那么我认为不需要失效。如果他们只能参加一方,那么您可能需要确保根据需要调整连接。
您可以使用RANGE_ADD
将新一方添加到聚会连接中。如果您需要采用更具针对性的手动方法,则还可以使用RANGE_ADD
将人员添加到各自的聚会连接中。如果您需要从派对中删除某人,可以查看NODE_DELETE
。如果你不太清楚改变谁或改变什么,但你知道派对参与者已经改变了什么,你可以去“全部重新获取”方法并使用FIELDS_CHANGE
。
如果您的服务器端逻辑很复杂并且在那里做了很多改变,那么您可以使用FIELDS_CHANGE
重新获取所有内容,捕获任何更改,或者您可以尝试构建突变有效负载以使其正确报告所有变化。