gpt4 book ai didi

couchdb - PouchDB - 手动管理冲突

转载 作者:行者123 更新时间:2023-12-02 12:09:22 24 4
gpt4 key购买 nike

是否可以从客户端管理同步冲突?

我的意思是,当 pouchDB 进行同步并检测到冲突时,是否可以获取 PouchDB 尝试同步的本地文档和 CouchDB 文档的最新版本?如果我可以获得这两个文档,我可以将它们显示给用户,他可以选择保留哪个版本...

最佳答案

你很幸运,因为这正是 CouchDB 和 PouchDB 旨在解决的问题。

基本上你可以阅读 CouchDB docs on conflict resolution 。其中的所有内容也应该适用于 PouchDB。 (如果没有,那就是一个错误。;))。 CouchDB wiki还有一篇不错的文章。

编辑:因此,为了提供更多详细信息,您需要使用 ?conflicts=true 获取文档 ({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- 开头,冲突版本也以 2- 开头,表明它们位于修订树的同一级别。

要获取冲突版本,您只需获取冲突版本并调用:

http://localhost:5984/db1/foo?rev=2-c1592ce7b31cc26e91d2f2029c57e621

你会得到:

{
"_id":"foo",
"_rev":"2-c1592ce7b31cc26e91d2f2029c57e621",
"notgonnawork":"this is from the first database"
}

因此,在向用户呈现两个冲突版本后,您可以在这两个版本之上添加第三个修订版,它可以组合结果,或者选择丢失的版本,或者您想要的任何版本。下一个修订版将以 3- 为前缀。有道理吗?

编辑:显然你还需要删除冲突的版本,否则它仍然会出现在_conflicts中。请参阅this answer .

关于couchdb - PouchDB - 手动管理冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24185125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com