Вот как вы это делаете в CouchDB, которую вы можете напрямую перевести в термины PouchDB, поскольку API-интерфейсы точно такие же.
Вы получаете документ, используя conflicts=true
для запроса конфликтов (get()
с {conflicts:true}
в PouchDB):
http://localhost:5984/db1/foo?conflicts=true
Вы получаете такой документ:
{
"_id":"foo",
"_rev":"2-f3d4c66dcd7596419c76b2498b3ba21f",
"notgonnawork":"this is from the second db",
"_conflicts":["2-c1592ce7b31cc26e91d2f2029c57e621"]
}
Возник конфликт из другой базы данных, и версия этой базы данных победила (случайным образом). Если вы использовали двунаправленную репликацию, обе базы данных дадут один и тот же ответ.
Обратите внимание, что обе версии начинаются с «2-». Это указывает на то, что обе они являются второй редакцией документа и находятся на одном уровне дерева редакций.
Используя идентификатор версии, вы получаете конфликтующую версию (get()
с {rev=...}
в PouchDB:
http://localhost:5984/db1/foo?rev=2-c1592ce7b31cc26e91d2f2029c57e621
Вы получите:
{
"_id":"foo",
"_rev":"2-c1592ce7b31cc26e91d2f2029c57e621",
"notgonnawork":"this is from the first database"
}
Представив пользователю две конфликтующие версии, вы можете PUT
(put()
) добавить третью версию поверх обеих. Ваша третья версия может объединять результаты, выбирать проигравшего или что угодно.
Продвинутое чтение:
person
nlawson
schedule
27.06.2014