我是 CouchDB 和 PouchDB 的新手,我正在使用它来创建一个联系人管理系统,该系统可以在移动设备和桌面设备之间同步,并且可以离线使用。我看到使用 PouchDB 比编写 PHP/MySQL 后端要容易得多。
我一直在成功使用它,当我在离线设备上进行冲突更改时,CouchDB 使用一种算法来任意选择一个获胜者,然后正确地将其推送到所有设备。
我想做的是实现一个自定义算法来合并冲突的记录。这是我想使用的算法:
- 如果在一个客户端上删除了一条记录,而仅在另一个客户端上进行了更新,则更新的版本获胜,除非两个客户端都同意删除。
- 具有最近“修改”时间戳的记录成为主记录,较旧的记录成为辅助记录。
- 仅存在于辅助节点中(或主节点中为空)的任何字段都将移至主节点。
- 保存主版本,删除次版本。
CouchDB 的指南有一个很好的解释,但我不知道如何在连续复制期间使用 PouchDB API 来实现它。根据PouchDB API,复制选项中有一个“onChange”侦听器,但我不明白如何使用它来拦截冲突。
如果有人可以写一个包含一些示例代码的简短教程,我和我相信许多其他 PouchDB 用户会很感激!