Apollo Client 如何将本地缓存的突变发送到服务器

Apollo Client how to send locally cached mutations to the server

我正在尝试根据用户请求将所有本地缓存​​的变更发送到服务器。 这个想法是 UI 中有一个“保存更改”按钮,允许用户使用所有本地应用的更改更新远程数据库。

示例:我在缓存中有一个用户对象:

"User:1": {
   name: "Tom",
   enabled: true
},
"User:2": {
   name: "John",
   enabled: true
}

现在,假设 UI 用户通过设置 enabled: false 并按“保存更改”来禁用这两个用户。此时,我希望发送所有本地更改;两个对象都应该发送到 remote 并保留在那里。 我尝试了几种方法,但它们都导致了相当复杂的代码。 有什么 canonic 方法吗?

不确定这是否相关,但我正在为 C# 使用“热巧克力”graphql 服务器。

没有什么比“本地缓存的突变”更好的了。

通过写入缓存,您只需改变其他操作的结果(查询或改变)。没有像“本地队列”、“要同步更新的本地副本”之类的东西——它只是一个缓存。您可以在突变后写入 save/avoid 不必要的查询(尤其是对于相关类型)。

要创建“保存更改”功能,只需从缓存中读取数据并在突变中使用它 - 可能是特殊的,接受数组作为 arguments/input 类型。如果没有这样的突变 available/permited 你可以尝试将许多(别名的)突变连接到一个请求中。