我目前在使用RxDb进行数据存储的Angular应用程序中遇到了一个问题。我遇到的错误是:
main.4e29907b55c8d8bf.js:1 ERROR Error: Uncaught (in promise): DataCloneError: Failed to execute 'put' on 'IDBObjectStore': function arrayBuffer() { [native code] } could not be cloned.DataCloneError: Failed to execute 'put' on 'IDBObjectStore': function arrayBuffer() { [native code] } could not be cloned.
字符串
此错误似乎与在RxDb中处理文件类型时对“IDBObjectStore”执行的“put”操作有关。导致此问题的特定代码段如下:s
async addNewProductForSyncLater(product: Product): Promise<void> {
product.key = "23";
let rxDocument: RxDocument = await this.myDatabase['syncProducts'].insert(product);
try {
const attachment = await rxDocument.putAttachment({
id: product.key,
data: product.image,
type: product.image.type
});
console.log("Attachment added:", attachment);
} catch (error) {
console.error('Error adding attachment:', error);
}
}
型
这是一个接口
export interface Product {
key ?: string ;
name :string ;
basePrice :number ;
salePrice :number ;
quantity :number ;
image : File;
imageUrl: string;
category :Category;
sellQuantity:number ;
}
型
注意,当inters方法有效并且image属性保存从输入字段中选择的文件时,
1条答案
按热度按时间afdcj2ne1#
IndexedDB只能存储结构化可克隆的类型,这并不包括所有可能的JS变量。例如,函数不是结构化可克隆的。
所以你试图存储的对象的某些属性不是结构化的可克隆的。如果你不确定是什么,我建议你删除它的内容,直到它工作,然后你可以识别出有问题的属性,并找出它不工作的原因,以及如何处理它。