- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以从客户端管理同步冲突?
我的意思是,当 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/
在 Pouchdb 中,处理多个数据集合的最佳方式是什么?我的意思是,例如,我需要多个待办事项列表,而不是一个简单的待办事项列表,例如:家庭待办事项、工作待办事项、社区待办事项和生态待办事项。 我应该
https://pouchdb.com/guides/compact-and-destroy.html 中的 PouchDB 文档引起了我的注意。 : By default, PouchDB and
PouchDB最佳实践建议是使用 PUT而不是 POST用于创建新文档(类似于 rdbms 中的一行),主要是因为后者会生成一个随机 ID,这使得后续数据排序效率低下。 PUT另一方面,需要提供用户生
我来自 Mysql 背景,现在正在使用 Pouchdb。我习惯了每个应用程序有 1 个数据库和许多表的 SQL 模式。 在 pouchDB 中则不同,因为数据不是存储在表中而是存储在文档中。因此,在我
我不知道在哪里可以捕获在 pouch 中访问远程 couchdb 的失败尝试。例如: var testPouchDB = new PouchDB('http://remotedb-url/non-ex
我在 pouchdb 中有一些数据,我想显示 pouchdb 中的总行数,我该怎么做? angular.module("pouchapp", ["ui.router"]) .run(function(
在浏览器中处理与同一远程/本地数据库同时同步的多个 PouchDB 实例的推荐方法是什么? 我的设置是浏览器中的一个 Web 应用程序,它与远程 CouchDB 持续同步。 该 Web 应用程序可以多
有没有办法更新文档的id?我试图通过以下代码实现这一点,但这会引发错误(如下): this.db.get('oldId') .then(document => { this.logshee
我正在使用 PouchDB 和 node.js 将我的文档存储在服务器上,但在开发过程中,许多有缺陷或需要删除的文档已经开始在数据库中积累。 是否有像 SQL Studio 这样的 GUI 客户端,它
我使用 CouchDB 作为后端,使用 PouchDB 在 vuejs 应用程序中查询/同步数据库。 我有 4 种不同类型的文档都存储在一个数据库中,如上所示: { "_id": "patient
CouchDB 文档: "members": [ { "name": "Mark", "age": 35, }, { "name": "
我在使用 pouchdb-find 创建索引以在 pouchDB 中搜索时遇到了一些麻烦.我一直收到错误 找不到可用的索引。尝试在以下位置创建索引:dateCreated。确保只有 $eq、$gt、$
我正在尝试将我的 redux 状态同步到 PouchDB 实例,但遇到了问题。 正如日志中所示,在操作发生后,我的 redux 状态既没有同步到 PouchDB,PouchDB 文档也没有在更新时同步
首先,我对使用 cloudant 还很陌生,所以这对我来说是一个非常陡峭的学习曲线。任何帮助表示赞赏。到目前为止我能找到的所有信息都来自几年前看似过时的 SO 帖子。 我已经设置了一项在我的资源列表中
首先,我对使用 cloudant 还很陌生,所以这对我来说是一个非常陡峭的学习曲线。任何帮助表示赞赏。到目前为止我能找到的所有信息都来自几年前看似过时的 SO 帖子。 我已经设置了一项在我的资源列表中
我正在使用 Angular5 项目测试 PouchDB。我想使用这些 pouchdb 插件: pouchdb-find relational-pouch 所以我知道如何导入 PouchDB: impo
我是 pouchdb 和 nw.js 的新手,可能这个问题有点太简单了(抱歉我的无知)。 我试图通过 require() 在 nw.js 项目中使用 pouchdb,但没有成功。 根据 pouchdb
在 PouchDB 中设置了一个continuous(实时)复制之后,我如何找到这些(比如 _replicate 或 _replicator 的事件任务)在 CouchDB 中)? 或者更确切地说,我
我在应用程序启动时建立同步(与事件监听器),我需要停止它并再次运行。有一个 .cancel() 函数可以工作,但我如何才能重新启动同步? 我试图删除在 cancel() 之后从 sync() 函数返回
假设我们将以JSON对象表示的汽车(约40MB)存储在PouchDB中,并且我们想基于马力属性进行搜索。 sql中的示例:从HP> 100的汽车中选择*。 您可以按键查询pouchDB,但是显然HP并
我是一名优秀的程序员,十分优秀!