Firefox OS上的顶级开放IndexedDB失败

时间:2014-12-30 10:24:43

标签: javascript indexeddb firefox-os

我创建了一个使用INdexedDb进行存储的FirefoxOS应用程序,我使用IDBWrapper进行了IndexedDB操作。我在Chrome和Firefox浏览器上测试了该应用,效果非常好。但是,只要我在模拟器上运行应用程序,应用程序就不会在IndexedDB中存储值。

当我尝试保存某些内容时,会抛出错误,指出'this.db'为空。

数据库创建代码

var dbOptions = {
        storeName: 'geoDiary',
        storePrefix: 'k2v-software-',
        dbVersion: 1,
        keyPath: 'ID',
        autoIncrement: true,
        indexes: [
            { name: 'Lat', keyPath: 'Lat', unique: false, multiEntry: false },
            { name: 'Lon', keyPath: 'Lon', unique: false, multiEntry: false },
            { name: 'Title', keyPath: 'Title', unique: false, multiEntry: false },
            { name: 'Description', keyPath: 'Description', unique: false, multiEntry: false },
            { name: 'Timestamp', keyPath: 'Timestamp', unique: false, multiEntry: false }
        ],
        onError: function(error) {
            $log.error(error);
        }
    };

    // create instance of datastore
    var idbDataStore = new IDBStore(dbOptions);

调用保存操作的函数。

$scope.saveToDB = function() {
        //var ID = new Date().getTime();
        var title = $scope.saveData.title;
        var description = $scope.saveData.description;
        var latitude = $scope.currentPosition.coords.latitude.toFixed(5);
        var longitude = $scope.currentPosition.coords.longitude.toFixed(5);
        var currentdate = new Date();
        var timestamp = currentdate.getDate() + "/"
            + (currentdate.getMonth()+1)  + "/"
            + currentdate.getFullYear() + " @ "
            + currentdate.getHours() + ":"
            + currentdate.getMinutes() + ":"
            + currentdate.getSeconds();


        var newRecord = {
            //ID: ID,
            Lat: latitude,
            Lon: longitude,
            Title: title,
            Description: description,
            Timestamp: timestamp
        };

        idbDataStore.put(newRecord, function () {
            // success callback
            //ID = null;
            title = null;
            description = null;
            latitude = null;
            longitude = null;
            currentdate = null;
            timestamp = null;
        }, callbackError);
    };

错误发生在idbstore.js上,这是我从Github为IDBWrapper获取的库。在该行中的文件是错误发生的地方,代码行在这里。

var putTransaction = this.db.transaction([this.storeName], this.consts.READ_WRITE);

错误this.db为空。我无法设置断点并逐步执行代码以确定问题的确切位置,因为WebIDE未显示idbstore.js文件。有人可以帮我弄清楚发生了什么。提前谢谢。

0 个答案:

没有答案