【问题标题】:IndexedDB InvalidStateError, windows 8IndexedDB InvalidStateError,Windows 8
【发布时间】:2025-12-26 04:10:06
【问题描述】:

我正在编写一个 JavaScript/HTML5 Windows 8 应用程序。在写入 IndexedDB 时,我偶尔会收到 InvalidStateError。我的功能在下面,它发生在第一行。有没有办法确保状态正确?

**newEncryptedInfo 是一个带有 2 个字符串参数的 JSON 对象(暂时)。格式正确。

function loadData(evt) {
   var transaction = EncryptedDB.db.transaction("data", "readwrite");
   var encryptStore = transaction.objectStore("data");
   var addResult = encryptStore.add(newEncryptedInfo);
}

【问题讨论】:

    标签: javascript windows-8 microsoft-metro indexeddb


    【解决方案1】:

    如果您在创建事务时收到 InvalidStateError,那么原因通常是因为数据库连接已关闭。点击here了解更多信息。

    【讨论】:

    • 问题似乎出在我所做的调用函数中:if(EncryptedDB.db) { EncryptedDB.db.close();}。不知道为什么。切换到 if(!EncryptedDB.db) { EncryptedDB.db = evt.target.result;}。从那以后没有发现问题。
    • 本地 :)。很高兴你找到了。顺便说一句,如果您想在 indexeddb 上使用具有更多过滤器选项的流畅库,请尝试我的 linq2indexeddb (linq2indexeddb.codeplex.com)。如果你在块中查找 Linq2IndexedDBWin8 包,你会得到我的 lib 的 windows 8 版本
    【解决方案2】:

    【讨论】: