降级/回滚IndexedDB?

问题描述 投票:0回答:1

我面临的情况是,我可能需要将我的网络应用程序回滚到以前的版本,因为新版本中存在一个错误,需要一些时间才能修复。

我知道IDB支持upgradeneeded事件,但我真的没有找到将其降级到以前版本的方法。

最初,我认为在同一个 Upgradeneeded 处理程序中处理降级迁移逻辑就足够了,但我意识到,一旦 IDB 发现我的代码尝试使用低于数据库当前使用的版本,它就会出错。

处理这种常见情况的正确方法是什么?

indexeddb
1个回答
0
投票

你真的有两个选择:

  • 检测坏版本,删除数据库,从头开始。如果数据仅存在于客户端计算机上,这将导致数据丢失。

  • 升级到另一个新的更高版本,并将回滚视为另一次升级。如果版本 N 是您的好版本,而 N+1 是您的有缺陷版本,则升级到 N+2:

    • 从 N 升级到 N+2 是无操作的。简单!
    • 从 N+1 升级到 N+2 是执行回滚逻辑的地方。
    • 升级

理想情况下,您在代码中的某个位置保留一个自述文件,记录版本的历史记录以及每个版本的更改内容。所以你会注意到 N+1 有问题,N+2 是回滚到 N。

© www.soinside.com 2019 - 2024. All rights reserved.