问题描述
我需要在数据库升级阶段过去后创建一个对象存储。为了实现这一点,我尝试关闭并重新打开具有新版本的数据库,并在 onupgradeneeded
事件中创建存储。
但是,它不像其他类似的方法那样返回 IDBRequest。此方法等待正在运行的事务完成,因此可以延迟关闭。我需要知道关闭事件,以便我可以重新打开它。有一个 onclose 事件不会触发,因为连接没有意外关闭:
当数据库连接意外关闭时触发。也可通过 onclose 属性获得。
我不想在打开尝试时定期检查 onblocked 事件是粗鲁的。在我的测试中,IndexedDB.open()
成功地重新打开了数据库,但如果不能保证,我无法将其推送到生产环境。在 w3 specs 中,他们写了 done 标志,但我在浏览器控制台中找不到它。
解决方法
我认为你不能?如果我理解正确的话,Joshua Bell 对 How do I check if an indexedDB instance is open? 的回答可能有助于回答您的问题。