indexedDB:发出调用事务函数

时间:2014-07-22 10:07:57

标签: indexeddb sencha-touch-2.3

我是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 

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

1 个答案:

答案 0 :(得分:1)

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

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

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