防止在 PouchDB Sync 上应该唯一的字段上的重复值

问题描述

我有一个使用 CouchDB 作为 DB 的系统,客户端通过 PouchDB 连接,有一个数据库的本地副本供离线使用。该应用没有后端 API,它直接连接到数据库

系统上的许多数据库包含一个或多个应该是唯一的字段(没有其他文档应该具有相同的值)。由于 CouchDB 并没有真正为字段提供“唯一的约束”,因此文档的唯一性是通过客户端的代码进行管理的。问题来自 PouchDB 的离线同步。

假设系统中有一个 pages 对象,它有两个应该是唯一的字段,nameslug。通过代码我们确保在发布新页面之前,这两个字段在数据库中不存在。然后假设一台 PC 离线一天,并创建了一个带有“主页”的页面,而同一天,一台在线的 PC 创建了另一个带有 slug “主页”的页面" 现在保存在远程数据库中。当 PC 1 上线时,它将同步本地和远程数据库,跳过验证代码添加第二个“主页页面

一种解决方法是将 must-be-unique 字段设置为文档的 _id 并管理同步冲突,但对于多个唯一元素,这是不可能的. (我仍然会感谢仅考虑单个唯一字段的回复)。

此外,在某些情况下,使用 _id 作为唯一字段并不理想。例如,在 POS 系统中,收银员在接受订单时需要使用 pin 进行登记。使用 4 号引脚作为 _id 似乎并不理想。

另一种选择是在注意到冲突时在同步之前询问用户的操作。但这需要一个预同步阶段来检查整个数据库并中断用户。我不确定如何在用户体验方面以无缝方式在系统中实现它。

对于如何处理这个巨大的问题有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)