Javascript IndexedDB从“中读取”;“价值”;对象-JSON存储+;需要检索
我是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
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;
}