【问题标题】:CouchDB Merging Revisions (conflict)CouchDB 合并修订(冲突)
【发布时间】:2015-06-12 09:28:13
【问题描述】:

所以我故意与本网站的示例产生冲突:http://guide.couchdb.org/draft/conflicts.html(处理冲突)。

现在有两个修订版,CouchDB 用自己的算法决定使用哪个修订版,但我想保留两个修订版并将它们合并。

例如:我在 数据库 A 上获得了电话号码:111 和姓名:Jules,并且在 数据库 B 上获得了电话号码:222 和姓名:Jules。 是否可以创建一个新文档来保留旧版本和新版本中的所有信息? 或者像“NewPhonenumber: 222”这样的新字段和其他字段 Phonenumber: 111 和 Name: Jules ?

无论如何我只想保留两个修订版。

我试图写一个视图函数,但我只是不知道如何从冲突的数据库中获取数据。

function(doc) { 
if(doc._conflicts)
emit(doc._id, doc);
emit(doc._id, {oldNumber: doc.phonenumber, newNumber: doc.phonenumber, name: doc.name});
}

如何将“oldNumber: doc.phonenumber”替换为旧版本中的号码?

谢谢!

【问题讨论】:

标签: merge couchdb conflict revision


【解决方案1】:

doc._conflicts 属性包含文档的一个或多个冲突修订版 - 您必须遍历列表并获取所需的值。

如果您在视图中执行此操作,您的冲突解决将永远不会被存储。您必须将已解决的文档版本作为新修订版发送到 CouchDB。

您可以使用查询参数?conflicts=trueCouchDB documentation 中的更多内容)请求包含冲突的文档,并将您的决定存储为新版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多