0

我尝试使用 db.js 将一个大数组保存到 IndexedDB 数据库中。该数组包含 100-1000 个元素,从用户不同,因为我在 JS 中的 Windows 8 Store-App 工作,并且该数组包含在用户图片库中找到的所有照片的对象。我想将该数组保存到数据库中,因为我不想每次都重新构建它。尝试保存时出现 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 回答