0

db.js を使用して、大きな配列を IndexedDB データベースに保存しようとしました。私はJSのWindows 8ストアアプリで作業しており、配列にはユーザーの画像ライブラリにあるすべての写真のオブジェクトが含まれているため、配列にはユーザーによって異なる100〜1000個の要素が含まれています。毎回それを構築したくないので、その配列をデータベースに保存したいと思います。保存しようとすると DataCloneError が発生します。

ここに私のコード:

server.objects.add({
   id: 0,
   pic: nametowrite,
   value: contenttowrite
});

picturesLibrary.getItemsAsync().then(function (items) { 
    if (items.size == 0) { return }; 
    for (var i2 = 0; i2 < items.size; i2++) { 
        if (items[i2].isOfType(Windows.Storage.StorageItemTypes.file)) { 
            if (filetype(items[i2].name) == true) { 
                pictures.push(items[i2]); 
            } 
        } else { 
            folders.push(items[i2]) 
        } 
    } 
});
4

1 に答える 1

0

大きすぎる配列からではなく、DOM ノードを保存しようとすると、このエラーがスローされます。MDNの構造化クローン アルゴリズムから:

  • DOM ノードのクローンを作成しようとすると、同様に DATA_CLONE_ERR 例外がスローされます。

contenttowrite(それがあなたのイメージであると仮定して)はblob.

blobスニペットする画像は次のとおりです。

var ajax = new XMLHttpRequest(),
    blob;
ajax.open( 'GET', 'example.png', true );
ajax.responseType = 'blob'; //the magic
ajax.addEventListener( 'load', function () {
    if ( ajax.status == 200 ) {
        blob = ajax.response;
    };
} );
ajax.send();
于 2013-03-03T04:29:36.933 に答える