【发布时间】:2020-10-01 16:08:47
【问题描述】:
我正在尝试创建一个 IndexedDb,但由于某种原因无法调用 onupgradeneeded,这意味着我无法创建我的对象存储。任何见解都会非常有帮助,这是我正在使用的代码:
const request = window.indexedDB.open('OriginInvestmentsFrontEnd', 1);
request.onerror = (event) => {
console.log('error: ', event);
};
request.onsuccess = (event) => {
console.log('success: ', event);
};
request.onupgradeneeded = (event) => {
console.log('onupgradeneeded: ', event);
const db = event.target.result;
db.createObjectStore('front-end-state');
};
我尝试过使用版本 1、2、3、4 和 10 和 11(以前没有创建过这些版本。)无论我尝试什么,永远不会调用 onupgardeneded 方法,我只会得到 onsuccess 方法.我在这里做错了什么?据我了解,版本更改应该触发 onupgradeneeded,但它不会?
【问题讨论】:
-
如果你打开开发工具,当前版本是多少?或者在onsuccess事件中打印出version属性
-
版本总是与我分配的任何版本匹配,这更奇怪。它会在不触发 onupgradeneeded 事件的情况下更改版本......
-
您的代码看起来正确,所以发生了一些不明显的事情。您是否有另一个阻止升级的数据库连接(注意
onblocked) - 成功事件也会延迟,但在您的测试中这可能并不明显。或者可能是带有断点的调试器,它在事件触发后附加 onupgradeneeded 处理程序? -
我也发生了同样的事情,你有什么解决办法吗?
标签: javascript indexeddb