首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CouchDB中处理冲突

在CouchDB中处理冲突
EN

Stack Overflow用户
提问于 2016-08-02 17:45:58
回答 1查看 1.5K关注 0票数 1

假设我有一个具有两个属性的文档,"Start“和”End“。一个修订可能有开始的时间,结束的时候为null,反之亦然。与其选择单个版本作为赢家,我希望最终的文档包含从修订开始的时间,在那里它不是空的,对于结束也是一样的。

在同步过程中,是否有处理此类冲突解决的最佳实践?我找到的文档包含了选择一个修订版作为赢家的说明,但是我想从多个revs中选择值。

特定于C#/MyCouch库的例子是很好的,但是任何一般性的或其他的语言建议也是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 13:21:04

您不能在复制期间指定冲突解决的自定义方法(a.k.a )。同步)。CouchDB自动选择获奖版本,您不能影响:

默认情况下,CouchDB使用确定性算法选择一个任意的修订版作为“赢家”,以便在所有对等点上做出相同的选择。

您可以等待复制完成,然后通过执行特定于应用程序的文档修订合并来处理冲突。

查看处理相互冲突的文件的文档,我发现了以下伪代码示例:

  1. 获取docid?conflicts=true
  2. 对于_conflicts数组中的每个成员:如果在此阶段发生错误,请获取docid?rev=xxx,从步骤1重新启动。(可能会有其他人已经解决了此冲突并删除了该rev的竞赛)。
  3. 执行特定于应用程序的合并
  4. 编写带有更新的_bulk_docs到第一个rev并删除其他rev的内容。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38727207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档