CouchDB _design文档冲突检测

时间:2011-03-23 16:13:47

标签: couchdb

我知道CouchDB会识别复制后发生冲突的文档。对于_design文档,CouchDB是否会对常规文档进行不同的冲突检测?例如,我在DB1中修改_design文档。然后我在DB2中修改相同的_design文档。然后我将DB1复制到DB2。我希望CouchDB识别出冲突,但是在复制之后,Couch不会发生冲突。

1 个答案:

答案 0 :(得分:4)

设计文档与普通文档完全相同,因此名称为“设计文档”而不是“沙发程序”等。

如果您对不同数据库中的相同文档进行相同的修改,则会出现冲突。如果您将同一个应用程序推送到两个不同的数据库(并且它们开头具有相同的couchapp push),则运行_rev可能会产生这种情况。

否则,您将收到冲突,无论是设计文件还是否。当然,沙发将“推广”一个版本作为规范版本,但如果您在视图中检查_conflicts,您将看到它们。 (要在视图中查看设计文档,还必须启用include_design选项。)

{ "_id": "_design/example"
, "views":
  { "conflicts":
    { "options": {"include_design": true}
    , "map": "function(doc) { if(doc._conflicts) emit(doc._id, doc._conflicts); }"
    }
  }
}

使用键范围扫描查找冲突的ddoc:

?startkey="_design/"&endkey="_design0"