【问题标题】:Can't get onupgradeneeded to be called, no matter how many times I change the version number上不了onupgrade需要调用,不管我改多少次版本号
【发布时间】: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


【解决方案1】:

我遇到了同样的问题,我正在更改版本以调用 onupgradeneeded,但它没有被调用
但是在研究后我得到了一个解决方案
在我的情况下,连接没有接近,这就是为什么它没有触发 onupgradeneeded 而是触发request.onblocked
所以关闭request.onblocked 也有连接

const request = window.indexedDB.open('OriginInvestmentsFrontEnd', 1);
db.onblocked = (event) => {
  console.log('blocked ...', event); // in my case this was triggering 
  (event.target as any).result.close(); // so close the connection and it worked
};
request.onerror = (event) => {
  console.log('error: ', event);
  (event.target as any).result.close(); // Close the connection
};
request.onsuccess = (event) => {
  console.log('success: ', event);
  (event.target as any).result.close(); // Close the connection
};

request.onupgradeneeded = (event) => {
  console.log('onupgradeneeded: ', event);
  const db = event.target.result;
  db.createObjectStore('front-end-state');
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多