CouchDB _design обнаружение конфликта документов - PullRequest
5 голосов
/ 23 марта 2011

Мне известно, что CouchDB определяет документы, которые находятся в конфликте после репликации.Работает ли CouchDB по-разному при обнаружении конфликтов в _design документах и ​​по сравнению с обычными документами?Например, я изменяю документ _design в DB1.Затем я изменяю тот же документ _design в DB2.Затем я копирую DB1 в DB2.Я ожидаю, что CouchDB идентифицирует конфликт, однако после репликации Couch не возвращает никаких конфликтов.

1 Ответ

4 голосов
/ 24 марта 2011

Проектная документация в точности похожа на обычную документацию, поэтому название «проектная документация» вместо «программ для кушеток» и т.* нет конфликты.Запуск couchapp push может создать такую ​​ситуацию, если вы поместите одно и то же приложение в две разные базы данных (и они имели одинаковый _rev для начала).

В противном случае вы получите конфликт, будь то проектный документили нетКонечно, couch будет "продвигать" одну ревизию как каноническую версию, но если вы отметите _conflicts в представлении, вы увидите их.(Для просмотра проектных документов в представлении необходимо также включить параметр include_design.)

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

Поиск конфликтующих документов с помощью сканирования диапазона ключей:

?startkey="_design/"&endkey="_design0"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...