从React Relay Mutation更新多个节点

时间:2016-01-22 05:59:35

标签: reactjs relayjs graphql

假设我有一个具有PeopleParties的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中聚会中的所有人都无效?

1 个答案:

答案 0 :(得分:0)

一个人只能参加一个派对,或者一个人可以参加多方派对吗?我问这个因为你使用了失效这个词。如果一个人可以参加多方,那么我认为不需要失效。如果他们只能参加一方,那么您可能需要确保根据需要调整连接。

您可以使用RANGE_ADD将新一方添加到聚会连接中。如果您需要采用更具针对性的手动方法,则还可以使用RANGE_ADD将人员添加到各自的聚会连接中。如果您需要从派对中删除某人,可以查看NODE_DELETE。如果你不太清楚改变谁或改变什么,但你知道派对参与者已经改变了什么,你可以去“全部重新获取”方法并使用FIELDS_CHANGE

如果您的服务器端逻辑很复杂并且在那里做了很多改变,那么您可以使用FIELDS_CHANGE重新获取所有内容,捕获任何更改,或者您可以尝试构建突变有效负载以使其正确报告所有变化。