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

前端之家收集整理的这篇文章主要介绍了数据库 – 解决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的修订版本,请删除该文档.

我希望这有帮助!

原文链接:https://www.f2er.com/mssql/81019.html

猜你在找的MsSQL相关文章