【发布时间】:2018-04-24 23:14:53
【问题描述】:
我正在尝试解决 CouchDB 回滚的问题,从而导致 PouchDB 在未来出现。我想找到一种方法来检测这种情况并在发生这种情况时强制 PouchDB 销毁并重新加载。
有没有办法向 PouchDB 询问它当前的 pull seq 编号?我根本找不到任何文档。我的 google-foo 不够强大。
到目前为止,我唯一的想法是观看 sync.on(change) 提要,并在每次拉取时记录 seq 编号。然后在应用重新加载时,以 ajax https:/server/db/_changes?descending=true&limit=1 运行它并验证返回的 seq 号是否高于我存储的 seq 号。如果存储的 seq 更高,则 pouchdb.destroy(),从 indexdb 中清除 _pouch_,并可能弄清楚如何删除此版本的 websql 版本https://github.com/pouchdb/pouchdb/releases/tag/6.4.2。
或者有没有更好的方法来解决 PouchDB 在未来领先于 CouchDB 的情况?
【问题讨论】:
-
拜托,你能解释一下在 CouchBD 中回滚的想法吗?哪个是确切的情况?即使您在 PouchDB 中有更高的序列,PouchDB 也会在每次复制后同步最后一个序列
-
灾难性硬件故障和 CouchDb 从备份中恢复。或者在我们的测试环境中,Catastrophic 的测试数据被回滚到 live 的副本中再次进行测试。我发现 PouchDb 停止同步,直到 CouchDb seq 赶上 PouchDb 的预期。当然,CouchDb 也会刷新以清除墓碑。
-
更清楚地说,假设我的个人资料是修订版 170,然后 CoucDb 回滚并且我的个人资料是版本 120。PouchDb 没有看到这种变化,它加载了它自己的 170 副本,不推动它,当下一次更改是版本 121 时会感到非常困惑。
-
@JuanjoRodriguez 如果 PouchDb 不关心序列号。理论上,我是否可以通过简单地使用脚本来运行所有相关文档,将它们拾取并使用新修订版将它们放回原处,从而进行更改并触发 pouchDb 获取最新更改来解决此回滚问题?
-
在这种情况下,您可能会遇到文档冲突。您的复制是拉式、推式还是两者兼而有之?