我面临的情况是,我可能需要将我的网络应用程序回滚到以前的版本,因为新版本中存在一个错误,需要一些时间才能修复。
我知道IDB支持upgradeneeded事件,但我真的没有找到将其降级到以前版本的方法。
最初,我认为在同一个 Upgradeneeded 处理程序中处理降级迁移逻辑就足够了,但我意识到,一旦 IDB 发现我的代码尝试使用低于数据库当前使用的版本,它就会出错。
处理这种常见情况的正确方法是什么?
你真的有两个选择:
检测坏版本,删除数据库,从头开始。如果数据仅存在于客户端计算机上,这将导致数据丢失。
升级到另一个新的更高版本,并将回滚视为另一次升级。如果版本 N 是您的好版本,而 N+1 是您的有缺陷版本,则升级到 N+2:
理想情况下,您在代码中的某个位置保留一个自述文件,记录版本的历史记录以及每个版本的更改内容。所以你会注意到 N+1 有问题,N+2 是回滚到 N。