2013-08-27 30 views
0

我是IndexedDB的新手,并且迄今为止在数据存储的值部分中存储了JSON字符串。IndexedDB从“Value”对象读取 - 需要检索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

您好,alecf有正确的答案,请标明问题所接受,如果它SOLV es你的用例。 –

回答

0

你并不需要字符串化的对象 - IndexedDB的可以处理你:

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

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

你可以得到它刚刚获得()“从对象存储的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; 
}