我有一个使用Couchbase lite的移动应用程序。当用户注销时,我想删除设备上的部分文件;用户特定的文档。我不想删除所有文件。文档有一个purgeDocument()
方法,我认为我可以调用这些用户特定的文档。
问题是,如果用户重新登录并执行拉动复制,则清除的文档不会重新同步到设备。
基于我对CouchDB同步协议的了解很少,因为没有对这些用户特定文档进行更新的序列更新以触发重新同步,所以不会重新同步这些协议。
我该如何处理这个问题?
答案 0 :(得分:0)
正如我从清除文档小节中的official documentation所理解的那样,你不是因为它没有被修改/更新而再次检索文档(简而言之,它的版本是在服务器端。
当用户再次登录您的应用程序时,您可以尝试再次创建具有相同类型的虚拟文档,例如用户名(或用于识别用户配置的任何内容),以便从中触发拉动复制服务器。您可能会遇到可以通过服务器修改轻松解决的冲突。
我希望这个想法有所帮助。
评论后更新
我们的想法是存储您要清除的用户文档的id
和type
。这样,当用户再次登录时,您可以使用这两个字段创建新的虚拟文档。也许这个新的虚拟文档会触发拉动复制。
注意:我没有尝试过这种方法。我只想猜测你的问题可能是什么。
答案 1 :(得分:0)
我建议您的后端修改所选文档 - 这可能只是一个时间戳更新 - 用户登录后,会将新版本发布到设备
答案 2 :(得分:0)
您可以在用户登录时继续清除文档。
要解决重新同步特定文档的问题,我认为最简单的方法是使用过滤复制,其中过滤器是文档ID。
可以以可以派生的方式创建这些文档ID。例如,它可以是UserDocument ::。
现在,当用户登录时,您可以启动一次性复制,文档ID作为过滤器。这只能一次完成。当One Shot完成后,您可以通过更改复制设置(更改过滤器/通道)再次开始复制。
以下是Couchbase的URL,它解释了按文档ID过滤的复制。
答案 3 :(得分:0)
在使用 Couchbase Lite 清除文档后尝试推送,它允许您稍后从服务器拉取文档。