Couchdb 在Couchbase Lite中清除文档
我有一个使用Couchbase lite的移动应用程序。当用户注销时,我想删除设备上的部分文档;用户特定的文档。我不想删除所有文档。文档有一个Couchdb 在Couchbase Lite中清除文档,couchdb,couchbase,couchbase-lite,couchbase-sync-gateway,Couchdb,Couchbase,Couchbase Lite,Couchbase Sync Gateway,我有一个使用Couchbase lite的移动应用程序。当用户注销时,我想删除设备上的部分文档;用户特定的文档。我不想删除所有文档。文档有一个purgeDocument()方法,我想我可以调用这些特定于用户的文档 问题是,如果用户重新登录并运行拉复制,则清除的文档不会重新同步到设备 根据我对CouchDB同步协议所知的一点,不重新同步这些文件是有道理的,因为在这些用户特定的文档上没有更新的序列来触发重新同步 我应该如何处理这个问题 可能性 删除整个数据库(包括常用文档)并失去性能 以某种方式重置
purgeDocument()
方法,我想我可以调用这些特定于用户的文档
问题是,如果用户重新登录并运行拉复制,则清除的文档不会重新同步到设备
根据我对CouchDB同步协议所知的一点,不重新同步这些文件是有道理的,因为在这些用户特定的文档上没有更新的序列来触发重新同步
我应该如何处理这个问题
可能性
id
和type
存储在某处。这样,当用户再次登录时,可以使用这两个字段创建一个新的虚拟文档。也许这个新的虚拟文档会触发拉复制
注意:我还没有尝试过这种方法。我只是猜测这可能是解决您问题的一个办法。我建议您的后端在用户登录时修改所选文档-这可能只是一个时间戳更新,这将把新的修订发布到设备上。用户登录时,您可以继续清除文档 要解决重新同步特定文档的问题,我认为最简单的方法是使用筛选复制,其中筛选是文档id 这些文档ID可以通过派生的方式创建。例如,它可以是UserDocument:: 现在,当用户登录时,您可以使用文档ID作为筛选器启动一次性复制。这只能一次完成。当这一次完成时,您可以通过更改复制设置(更改过滤器/通道)再次开始复制 下面是Couchbase提供的URL,它解释了按文档ID筛选的复制
我认为您应该选择第三个。我不知道如果我必须管理另一个数据库,会遇到多少开销或不必要的复杂性。因此,您建议在登录时,我创建一个重复的用户记录,我知道该记录存在于服务器上,但在设备上丢失,然后服务器会发送正确的文档?我不明白为什么服务器会推下冲突的版本。