0

我是 IndexedDB 的新手,到目前为止,我已经在数据存储的值部分存储了一个 JSON 字符串。

我这样存储:

function createDB() {
customerData = [];
for (i = 0; i < 100000; i++) {
    customerData.push({ id: i, add1: "add1_" + i, add2: "add2_" + i, custName: "ted_" + i });
}
var request = window.indexedDB.open("Customer", 1);

request.onsuccess = function (e) {

    request = e.target.result;
    alert("database created");
};

request.onupgradeneeded = function (e) {
    var db = e.target.result;
    var store = db.createObjectStore("cust", { keyPath: "id" });
    var jsonIndex = store.createIndex("by_key", "id", { unique: true });

    var jsonStr = JSON.stringify(customerData);
    var request = store.put({ id: "1", json: jsonStr });
};

};

谁能告诉我如何解码这个 JSON 并将其读入 HTML 页面?

4

1 回答 1

0

您不需要对对象进行字符串化 - IndexedDB 可以为您处理:

var request = store.put({ id: "1", data: customerData });

此外,如果您的对象存储已经有一个“id”的 keyPath,您不需要在“id”上创建索引 - 您只是在创建相同数据的重复索引。

您可以通过 objectStore 中的 id get()'ing 来获取它:

var request = store.get("1").onsuccess = function(event) {
    var value = event.target.result;
    var customerData = value.data;
}

但实际上你可以简化这点,因为 IndexedDB 理解数字和其他简单的键值:

var request = store.put(customerData, 1);

var request = store.get(1).onsuccess = function(event) {
    var customerData = event.target.result;
}
于 2013-08-29T17:45:51.947 回答