我是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页面上?
答案 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;
}