我尝试使用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])
}
}
});
答案 0 :(得分:0)
如果您尝试保存DOM节点而不是数组太大,则会引发该错误。来自MDN的The Structured Clone Algorithm:
- 尝试克隆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();