小编Col*_*kow的帖子

如何通过连续复制解决冲突

我是CouchDB和PouchDB的新手,并且正在使用它来创建一个可以在移动和桌面设备上同步的联系人管理系统,并且可以脱机使用.我发现使用PouchDB比编写PHP/MySQL后端要容易得多.

我一直在成功使用它,当我在离线设备上做出相互矛盾的更改时,CouchDB使用一种算法随意挑选一个胜利者,然后将其正确地推送到所有设备.

我想要做的是实现自定义算法来合并冲突的记录.这是我想要使用的算法:

  1. 如果在一个客户端上删除记录而仅在另一个客户端上更新,则更新版本将获胜,除非两个客户端都同意删除.
  2. 具有最新"已修改"时间戳的记录将成为主记录,而较旧记录将成为次要记录.
  3. 仅存在于辅助节点中(或在主节点中为空)的任何字段都将移至主节点.
  4. 将保存主版本,并删除辅助版本.

CouchDB的指南有一个很好的解释,但我不知道如何在连续复制期间使用PouchDB API实现它.根据PouchDB API,复制选项中有一个"onChange"侦听器,但我不明白如何使用它来拦截冲突.

如果有人可以写一个简短的教程,包括一些示例代码,我和我相信很多其他PouchDB用户会很感激!

couchdb database-replication pouchdb

11
推荐指数
1
解决办法
3277
查看次数

Firebase离线缓存和原始firebase.js源代码

我的问题是这个主题的后续行动.到目前为止,我喜欢Firebase的简洁性和性能.

据我所知,firebase.js将来自服务器的数据快照同步到Javascript内存中的对象.但是,目前没有将此数据缓存到磁盘的功能.

结果是:

  1. 应用程序在启动时需要连接,因此没有真正的脱机访问.
  2. 每次应用启动时都会通过重新传输所有以前的数据来浪费带宽.

由于快照数据作为Javascript对象位于内存中,因此将其序列化为JSON并将其保存到localStorage应该非常简单,因此可以在下次启动应用程序时在线或不加载确切的应用程序状态.但是当firebase.js代码缩小并且神秘时,我不知道在哪里看.

PouchDB在CouchDB后端处理得非常好.(但它缺乏Firebase的快速响应时间和简单性.)

所以我的问题是:

1.我需要将哪些数据序列化以将快照保存到localStorage?如何在应用启动时将其加载回Firebase?

2.我在哪里可以下载firebase.js的原始非缩小开发源代码?

(顺便说一下,有两个功能可以帮助Firebase将比赛从水中吹走:离线缓存和地图减少.)

javascript offline-caching firebase

9
推荐指数
1
解决办法
3368
查看次数

Cloudant Query&CouchDB Mango:如何设置$ regex标志?

是否可以使用Cloudant Query/CouchDB 2.0 Find设置$ regex标志?

具体来说,我想要一个不区分大小写的搜索,全局也很有用.

在JavaScript中我会这样做:

db.find({
    selector: {
      _id: {$gt: null},
      series: {$regex: /mario/i}
    }
  });
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将其编码为Erlang字符串.

couchdb cloudant

2
推荐指数
1
解决办法
4793
查看次数