6

私の戻りjsonファイルは次のようになります:

var data = [{"col1":"value1","col2":"value1","col3":"value1"},{"col1":"value2","col2":"value2","col3":"value2"},{"col1":"value3","col2":"value3","col3":"value3"}];

JSON.stringify を使用しない場合、データは次のようになります。

[対象オブジェクト]、[対象オブジェクト]、[対象オブジェクト]

しかし、それで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);
};   
4

2 に答える 2

5
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]);
    } 
于 2012-09-26T17:37:18.350 に答える
4

新しい訪問者には、少し変更することをお勧めします: IDBTransaction.READ_WRITE は廃止されたため、代わりに「readwrite」を使用してください。

リソース: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB リファレンス:

古い実験的な実装では、「readwrite」の代わりに非推奨の定数 IDBTransaction.READ_WRITE を使用します。

また、locを減らすには(私が最も好む)、次を使用します。

var objstore = db.transaction([STORE], "readwrite").objectStore(STORE); 
for (i = 0; i < data.length; i++) { 
    objstore.put(data[i]);
}
于 2014-09-19T07:08:26.853 に答える