IndexedDB从“Value”对象读取 - 需要检索存储的JSON +

时间:2013-08-27 12:02:50

标签: javascript html json datastore indexeddb

我是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页面上?

1 个答案:

答案 0 :(得分:0)

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

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

此外,如果您的对象库已经具有“id”的keyPath,则无需在“id”上创建索引 - 您只需创建相同数据的重复索引。

你可以通过来自objectStore的id()来获取它:

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;
}