我的返回json文件如下所示:
var data = [{"col1":"value1","col2":"value1","col3":"value1"},{"col1":"value2","col2":"value2","col3":"value2"},{"col1":"value3","col2":"value3","col3":"value3"}];
没有JSON.stringify数据的如下所示:
[object Object],[object Object],[object Object]
但是有了它,result.length不是5,而是字符串的总字符数,这样我就不能进行循环了
var result = JSON.stringify(data);
for(i=0; i<result.length; i++){
var transaction = db.transaction([STORE], IDBTransaction.READ_WRITE);
var put = transaction.objectStore(STORE).put(result);
};
答案 0 :(得分:4)
对于新访问者,建议进行一些修改: IDBTransaction.READ_WRITE已被弃用,因此请改用“readwrite”。
资源:https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB 参考:
较旧的实验性实施使用不推荐使用的常量 IDBTransaction.READ_WRITE而不是“readwrite”。
另外,要减少loc(我最喜欢的),请使用:
var objstore = db.transaction([STORE], "readwrite").objectStore(STORE);
for (i = 0; i < data.length; i++) {
objstore.put(data[i]);
}
答案 1 :(得分:3)
var data = [{"col1":"value1","col2":"value1","col3":"value1"},{"col1":"value2","col2":"value2","col3":"value2"},{"col1":"value3","col2":"value3","col3":"value3"}];
如果你试图存储每个OBJECT,那么不要将它或其他任何字符串化,它已经是完美的形式。更改for()
循环以循环访问数据对象。
Kristof Degrave 有一个很好的观点,出于性能原因,将这些置于实际for循环之外。
var transaction = db.transaction([STORE], IDBTransaction.READ_WRITE);
var objstore = transaction.objectStore(STORE);
for (i = 0; i < data.length; i++) {
objstore.put(data[i]);
}