【问题标题】:indexedDB: issue calling transaction functionindexedDB:发出调用事务函数
【发布时间】:2014-07-22 10:07:56
【问题描述】:

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

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

【问题讨论】:

    标签: indexeddb sencha-touch-2.3


    【解决方案1】:

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

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

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

    【讨论】:

    • 其实我错误地发布了错误的代码版本。我现在已经编辑过了。谢谢,我会学习异步功能。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    相关资源
    最近更新 更多