加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据库 – 解决CouchDB中已删除文档的复制冲突

发布时间:2020-12-12 16:53:04 所属栏目:MsSql教程 来源:网络整理
导读:解决官方文档推荐的复制冲突的方法是: 使用文档的_conflicts字段(例如通过视图)读取冲突的修订版本 获取列出的所有修订版本的文档 执行特定于应用程序的合并 删除不需要的修订 当我想要合并已删除的文档时出现问题.它们不会出现在_conflicts字段中,但在_dele
解决官方文档推荐的复制冲突的方法是:

>使用文档的_conflicts字段(例如通过视图)读取冲突的修订版本
>获取列出的所有修订版本的文档
>执行特定于应用程序的合并
>删除不需要的修订

当我想要合并已删除的文档时出现问题.它们不会出现在_conflicts字段中,但在_deleted_conflicts中.如果我仅使用_conflicts字段进行合并,并且在本地数据库中删除文档并在远程副本中进行编辑,则它将在复制时在本地复活.我的应用程序模型假设删除总是优先合并:删除的文档保持删除,无论与其冲突什么编辑.

所以,乍一看,最简单的事情是检查_deleted_conflicts不是空的,如果它不是空的,删除文档,对吧?嗯…这个问题是这个也可能包含通过解决步骤#4中的编辑冲突引入的删除的修订,所以在这种情况下_deleted_conflicts的含义是不明确的.

处理CouchDB中的删除冲突(如果有的话)的规范方法是什么,不涉及如何将文档标记为在应用程序层被删除和过滤?

解决方法

最好的解决方案是使用_deleted的保留属性来删除文档而不是HTTP DELETE.然后你可以自由地设置其他属性:
doc._deleted = true;
doc.deletedByUser = true;
doc.save();

然后在合并过程中,检查_deleted_conflicts的_changes feed,如果_deleted_conflicts中有一个将deletedByUser标志设置为true的修订版本,请删除该文档.

我希望这有帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读