0
我有難的話題一個非常簡單的問題:PouchDB +解決衝突
如何在PouchDB解決衝突的工作?
我看了看文檔,也很快用Google搜索,但沒有幫助。那麼,我該如何處理使用PouchDB的應用程序中的衝突管理?
我有難的話題一個非常簡單的問題:PouchDB +解決衝突
如何在PouchDB解決衝突的工作?
我看了看文檔,也很快用Google搜索,但沒有幫助。那麼,我該如何處理使用PouchDB的應用程序中的衝突管理?
以下是您如何在CouchDB中執行此操作,您可以直接將其轉換爲PouchDB條款,因爲API完全相同。
你獲取了一個文件,使用conflicts=true
索要衝突(get()
在PouchDB {conflicts:true}
):
http://localhost:5984/db1/foo?conflicts=true
,您會收到一份文件是這樣的:
{
"_id":"foo",
"_rev":"2-f3d4c66dcd7596419c76b2498b3ba21f",
"notgonnawork":"this is from the second db",
"_conflicts":["2-c1592ce7b31cc26e91d2f2029c57e621"]
}
有衝突從另一個數據庫引入,並且該數據庫的修訂已(隨機)獲勝。如果您使用雙向複製,則兩個數據庫都會提供相同的答案。
請注意,兩個修訂都以「2-」開頭。這表明它們都是對文檔的第二次修訂,並且它們都與修訂樹的同一級別。
使用修訂ID,您在PouchDB取衝突版本(get()
與{rev=...}
:
http://localhost:5984/db1/foo?rev=2-c1592ce7b31cc26e91d2f2029c57e621
您會收到:
{
"_id":"foo",
"_rev":"2-c1592ce7b31cc26e91d2f2029c57e621",
"notgonnawork":"this is from the first database"
}
呈現兩種相互矛盾的版本以供用戶後,你可以在PUT
(put()
)的基礎上進行第三次修改。你的第三個版本可以結合結果,選擇失敗者,o無論你想要什麼。
高級閱讀:
感謝您的回答。但問題更多 - 如何在活動複製時同步項目? – dimko1
有關活動複製期間衝突解決的教程,請參閱:http://stackoverflow.com/questions/18434686/pouchdb-how-to-resolve-conflicts-with-continuous-replication –