0

我是 IndexedDB 和 sencha touch 框架的新手。在 sencha 学习 IndexedDB 时,我遇到了一个问题,我搜索了很多但找不到任何解决方案。

让我先向您展示我的代码块

        var db;
        var myRequest = indexedDB.open("testDB", 8);

        myRequest.onupgradeneeded = function (e) {
            console.log("upgrading...");
            var thisDB= e.target.result;
            if(!thisDB.objectStoreNames.contains("FirstOS")){
            thisDB.createObjectStore("FirstOS");
            }
        };

        myRequest.onsuccess = function (e) {
            console.log("success...");
            db= e.target.result;
        };

        myRequest.onerror = function (e) {
            console.log("error occured");
        };


    var transaction = db.transaction(["FirstOS"],"readwrite");
    var store= transaction.objectStore("FirstOS");

它抛出一个异常说

Uncaught TypeError: Cannot read property 'transaction' of undefined 

任何帮助,将不胜感激。谢谢你。

4

1 回答 1

1

此错误消息并非特定于使用 indexedDB。调用indexedDB.db.transaction()是生成此错误消息的原因。当您尝试调用未初始化对象的方法时会发生此错误。为避免此错误,请勿var db在 onsuccess 回调函数范围之外使用。不要尝试使用db=event.target.result;.

出现此错误是因为您可能不熟悉异步函数。在继续使用 indexedDB 之前,您需要了解有关如何编写异步代码的更多信息。

这个问题是几个类似问题的重复:

于 2014-07-22T12:03:52.277 回答