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