Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IndexedDB从“中读取”;“价值”;对象-JSON存储+;需要检索_Javascript_Html_Json_Datastore_Indexeddb - Fatal编程技术网

Javascript IndexedDB从“中读取”;“价值”;对象-JSON存储+;需要检索

Javascript IndexedDB从“中读取”;“价值”;对象-JSON存储+;需要检索,javascript,html,json,datastore,indexeddb,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.index

我是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 });
};

};
函数createDB(){
customerData=[];
对于(i=0;i<100000;i++){
push({id:i,add1:“add1”+i,add2:“add2”+i,custName:“ted”+i});
}
var请求=window.indexedDB.open(“客户”,1);
request.onsuccess=函数(e){
请求=e.target.result;
警报(“已创建数据库”);
};
request.onupgradeneeded=函数(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页面吗?

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

var request = store.put({ id: "1", data: customerData });
此外,如果您的对象存储已经有一个键路径为“id”,那么您不需要在“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);


您好,alecf有正确的答案,如果问题解决了您的用例,请将其标记为已接受。
var request = store.get(1).onsuccess = function(event) {
    var customerData = event.target.result;
}