降级/回滚IndexedDB?

mbyulnm0  于 12个月前  发布在  IndexedDB
关注(0)|答案(1)|浏览(196)

我面临的情况是,我可能需要将我的Web应用程序回滚到以前的版本,因为新版本中的一个错误需要一段时间才能修复。
我知道IDB支持upgradeneeded事件,但我真的没有看到一种方法来降级到以前的版本。
最初我认为在同一个upgradeneeded处理程序中处理降级迁移逻辑就足够了,但我意识到IDB一旦发现我的代码试图使用比DB当前使用的版本低的版本,就会出错。
处理这种常见情况的正确方法是什么?

dced5bon

dced5bon1#

你真的有两个选择:

  • 检测坏版本,删除数据库,然后从头开始。如果数据仅存在于客户端计算机上,则这将导致数据丢失。
  • 升级到另一个新的更高版本,并将回滚视为另一次升级。如果版本N是你的好版本,N+1是你的bug版本,那么升级到N+2:
  • 从N到N+2的升级是无效操作。别紧张!
  • 从N+1到N+2的升级是您执行回滚逻辑的地方。
  • 从<N到N+2的升级与从<N到N的升级代码相同。

理想情况下,您应该在代码中的某个地方保留一个README,记录版本的历史以及每个版本的更改。所以你会注意到N+1是错误的,N+2是对N的回滚。

相关问题