CouchDB从每个用户数据库复制到master数据库

70gysomp  于 2022-12-09  发布在  CouchDB
关注(0)|答案(2)|浏览(125)

我有系统弓:主数据库名为master,用户数据库名为user1user2。我将一个文档从主数据库复制到user1user2数据库。然后用户分别在他们的数据库中修改该文档(例如,用户1添加tags:[1, 2],用户2添加tags:[3, 4]字段)。现在,我'我想从用户数据库复制回主数据库并合并新添加tags字段,我可能需要在复制上运行一些逻辑,使结果标记为tags:[1,2,4]
什么是正确的方法?

ddrv8njm

ddrv8njm1#

这是简单地解决与复制+冲突。有一个主外部进程,检查冲突,合并标签,然后写新的文件。

hl0ma9xz

hl0ma9xz2#

你没有说你可能想在你的最终结果中去掉标签“3”,所以很难给予一个完整的答案。
CouchDB文档中有很多关于处理这种情况的方法的信息。设计如何存储数据以及如何use the stored data to resolve conflicts,其中包括以下“使用冲突解决方法获取文档的建议代码”

  1. GET文档ID?冲突=真
    1.对于_conflicts数组中的每个成员:GET docid?rev=xxx如果在此阶段出现任何错误,请从步骤1重新开始。(可能存在竞争,其他人已经解决了此冲突并删除了该rev)
    1.执行特定于应用程序的合并
  2. Write _bulk_docs,更新第一个修订版本并删除其他修订版本。
    它还指出“这可以在每次读取时完成(在这种情况下,您可以将应用程序中对GET的所有调用替换为对执行上述操作的库的调用),或者作为清扫器代码的一部分。”
    这回答了你所有的问题吗?

相关问题