数据库 – 解决CouchDB中已删除文档的复制冲突
解决官方文档推荐的复制冲突的方法是:
>使用文档的_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的修订版本,请删除该文档. 我希望这有帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |