PouchDB +冲突解决方案

时间:2014-06-27 11:16:32

标签: javascript pouchdb

我有一个关于硬话题的非常简单的问题:

如何在PouchDB中解决冲突?

我查看了文档,以及快速谷歌搜索,但它没有帮助。那么,如何处理我使用PouchDB的应用程序中的冲突管理?

1 个答案:

答案 0 :(得分:5)

以下是您在CouchDB中的使用方法,您可以将其直接转换为PouchDB术语,因为API完全相同。

您使用conflicts=true来获取文档,以便在PouchDB中询问冲突(get(){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"
}

在向用户展示两个相互冲突的版本后,您可以PUTput())在这两个版本之上添加第三个版本。你的第三个版本可以结合结果,选择失败者,或任何你想要的。

高级阅读: