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