indexedDB.deleteDatabase()引发错误

问题描述 投票:2回答:4

我正在尝试删除数据库以进行单元测试:

var DeleteDb = indexedDB.deleteDatabase(dbName);

这段代码在茉莉花中的第一个beforeEach中被直接调用。使用chrome devTools,我可以看到DeleteDb.error具有以下值:

错误:[异常:DOMException:无法从'IDBRequest'读取'error'属性:请求尚未完成。]

DeleteDb.onsuccess或DeleteDb.onerror不会触发。我也从来没有试图读取代码中的“错误”属性。

有人知道这个错误是什么意思,它是从哪里来的或者我怎么解决?

UPDATE:这段代码有时对我来说还是失败的。它给了我与上面相同的错误。

<html>
    <head>
        <script>
        var deleteDb = window.indexedDB.deleteDatabase('fakeNonExistentDatabase');
        deleteDb.onsuccess = function() {
            console.log('complete');
        };
        </script>
    </head>
</html>

我仍然不确定为什么会这样。有时打开一个新标签或关闭另一个标签会起作用。同样,在删除onsuccess回调时,它也永远不会给出错误]

UPDATE 2

看起来代码确实可以正常工作,但是onsuccess事件从未触发过,因为在chrome devtools中按F8键时不再触发任何事件。我现在得到的错误是:

未捕获的InvalidStateError:无法在'IDBDatabase'上执行'transaction':数据库连接正在关闭。

我以为上面的错误消息是本文中第一个错误消息的结果,但实际上是相反的。我可以在互联网上找到一些关于此主题的页面,但实际上并没有提供答案。

有什么想法吗?

我正在尝试删除数据库以进行单元测试:var DeleteDb = indexedDB.deleteDatabase(dbName);这段代码在茉莉花中的第一个beforeEach中被直接调用。与chrome devTools i ...

javascript jasmine indexeddb
4个回答
1
投票

也请检查是否被阻止。可能存在另一个数据库连接,使您的删除请求既失败又失败。


0
投票

好吧,事实证明我的所有代码都不错,但是第二次删除数据库大约需要10秒到几分钟的时间。


0
投票

删除时请确保


0
投票

这晚了5年,但以防万一还有更多像我这样的人...

© www.soinside.com 2019 - 2024. All rights reserved.