Chrome没有完全删除indexedDB数据库。

3
我一直在尝试关闭和删除一个indexedDB数据库,但大约有10%的时间它会陷入不理想的状态。问题在于它将删除所有对象存储,但会保留数据库条目,如下图所示。 enter image description here 目标是在用户注销并重新加载页面时,一次性完全删除indexedDB数据库。当数据库未完全删除时,会在用户登录时引起问题,因为onupgradeneeded未被调用,对象存储未被重建。
this.db.close();

var request = indexedDB.deleteDatabase("mcfarljwtest2");

request.onsuccess = function() {
    setTimeout(function() {
        location.reload(true);
    }, 1000);
};

request.onerror = function(error) {
    console.log(error);
};

有没有什么我漏掉或忽视的地方,可以让它完全删除100%的时间?


1
请提供一个完整的、自包含的演示,并在 http://crbug.com/new 上报告它。 - Rob W
尝试使用jQuery indexedDB插件。它需要代码更改,但提供了更好的indexedDB实现。 请参见http://nparashuram.com/jquery-indexeddb/ - user3260861
@KyawTun 我只在开发控制台打开时注意到了这个问题,但我们使用 Raygun 的错误日志表明它偶尔会发生在可能没有打开控制台的用户身上。 - Joshua
@user3260861,虽然我们不会切换到那个插件,但感谢您提出这个问题,因为我可以看一下它如何处理数据库的删除。 - Joshua
这听起来可能是一个开发控制台集成问题。我猜测发生的情况是控制台枚举数据库,然后您的代码运行以删除数据库,接着控制台打开数据库检查内容,从而隐含地在 v1 重新创建数据库。https://crbug.com/539931 - Joshua Bell
显示剩余6条评论
1个回答

2

您在Chrome浏览器中发现了一个bug!

我已将此问题报告至https://crbug.com/539931,并且已经修复。除非有意外的副作用,否则该修复程序应该会在Chrome 48版本中发布。

正如您上面所提到的,此问题仅限于打开devtools并主动检查数据库资源时才会出现,因此不太可能影响最终用户,只会影响开发人员。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接