我有一个关于困难主题的非常简单的问题:
PouchDB 中的冲突解决如何工作?
我查看了文档,并快速搜索,但没有帮助。那么,如何在使用 PouchDB 的应用程序中处理冲突管理?
我有一个关于困难主题的非常简单的问题:
PouchDB 中的冲突解决如何工作?
我查看了文档,并快速搜索,但没有帮助。那么,如何在使用 PouchDB 的应用程序中处理冲突管理?
这是您在 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-”开头。这表明它们都是文档的第二个修订版,并且它们都位于修订树的同一级别。
使用修订 ID,您可以获取冲突的版本(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()
) 在这两个版本之上进行第三次修订。你的第三个版本可以结合结果,选择失败者,或者任何你想要的。
进阶阅读: