IndexedDB未定义请求

时间:2018-04-09 08:08:05

标签: javascript indexeddb

我是第一次使用IndexedDB而且我还在努力解决这个问题。 我(想想我)在页面上的IndexedDB中添加了项目,在下一页我需要检索它们。 这是代码的一部分:

var db;
const dbName = "biometricData";
const osName = "userdata";

var request = indexedDB.open(dbName, 1); /*Creazione del database*/
request.onsuccess = function(event) {
    db = this.result;   /*Salvo l'istanza del database al momento della crazione*/
    alert ("Database creato");
    updateBatteryData();
};
request.onerror = function(event) {
  var error = request.error;
  alert(error);
};
request.onupgradeneeded = function(event) {
  /*Chiave di ricerca e creazione dell'objectstore*/
  db = this.result;
  alert("Upgrade Needed");
            if(!db.objectStoreNames.contains(osName)) {
                alert("Devo creare l'Object Store "+osName);
                var objectStore = db.createObjectStore(osName, { keyPath: "id", autoIncrement:true });  
                objectStore.createIndex("student","student", {unique: false});
                objectStore.createIndex("type","type", {unique: false});
            }
};

这是首先创建数据库

function updateBatteryData() {
        batteryData = {id:id,
                       student:matr,
                       type:6,
                       index:batteryDataIndex,
                       time:data["time"],
                       batteryLevel:data["batteryLevel"],
                       isCharging:data["isCharging"],
                       dischargingTime:data["dischargingTime"]};

    var transaction = db.transaction([osName], "readwrite");
    var objectStore = transaction.objectStore(osName);
    var request = objectStore.add(batteryData);

    request.onsuccess = function(event)
    {
        alert("salvato il primo valore di batteria");
    }
}

然后我调用此函数将对象保存在DB中(当然所有这些值都未定义)。 此外,这始终是id = 1。

然后,在下一页上,我尝试检索数据。我以同样的方式打开数据库,然后我使用它:

var transaction = db.transaction([osName]);
var objectStore = transaction.objectStore(osName);
var request = objectStore.get(1);
request.onerror = function(event) {
  alert("error");
};
request.onsuccess = function(event) {
  alert("done");
  alert(event.target.result.type);
};

问题是:如果我是第一次创建数据库,获取值,保存它们,然后在它没有做任何事情的下一页上检索它们,它表示值未定义。如果我第二次对已经创建的数据库做同样的事情,它实际上会找到数据。

我错过了什么?

0 个答案:

没有答案