使用Cordova项目中的Indexed DB添加记录

时间:2015-02-10 09:53:14

标签: android cordova indexeddb

我在从表单添加记录时出现问题。

当我按下按钮调用功能"保存":

var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;

var dataBase = null;

function save(){

dataBase = indexedDB.open("bbdd", 1);

dataBase.onupgradeneeded = function (e) {
    active = dataBase.result;
};

dataBase.onsuccess = function (e) {
    console.log('Database loaded!');    

    var active = dataBase.result;
    var data = active.transaction(["docs"], "readwrite");
    var object = data.objectStore("docs");

    var request = object.put({
        idDoc: document.querySelector("#idDoc").value,
        name: document.querySelector("#name").value,
    });

    request.onerror = function (e) {
        alert(request.error.name + '\n\n' + request.error.message);
    };

    data.oncomplete = function (e) {
        idDoc: document.querySelector("#idDoc").value = '';
        name: document.querySelector("#name").value ='';
    };
}

dataBase.onerror = function (e)  {
    console.log('Error loading database');
};

}

确定。我在Chrome和Firefox(Windows XP)中测试并且工作正常。数据将添加到数据库中并清除字段。

现在,我构建了cordova项目并在Nexus 5(Android 5.0.1)中运行它:

cordova run android --devices="myId"

在Nexus 5中,donesn无法正常工作。当我点击按钮时,手机什么都不做。数据没有添加到数据库中,字段也没有清除。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我也有这个问题。 Android 5.0.1上似乎存在与浏览器存储相关的错误。 localStorage,webSQL和indexDB会发生此问题。 很多人都在体验这一点:Android 5.0.1 localstorage not persistent

我做了一个简单的应用程序只是为了测试。我打开应用程序,我只是这样做(我在onDeviceReady时添加了代码 - 当加载cordova时):

var a = window.localStorage.getItem('test');
alert(a); //will give you undefined first time
if (!a) {
    window.localStorage.setItem('test','12345678');
    alert(windows.localStorage.getItem('test');
    //this will display 12345678 from localstorage evertime
}

如果您在2或3秒后关闭应用程序(强制关闭应用程序)并重新打开它,则localstorage中的test值仍为undefined。您可以执行此操作10次,每次都会获得undefined。如果您在打开应用程序并等待警报后等待10或12秒,您会注意到重新启动应用程序(强制重启)后,数据就在那里,localStorage正常工作。

我在Android 5.0.1上测试了这个,我使用了cordova 3.6.3,cordova 4.0,cordova 5.0。我在安装了Android 4.4.2的平板电脑上进行了相同的测试,并正确设置了localStorage。