You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Dexie存数组到IndexedDB遇DataCloneError,求移除[[Prototype]]方法

解决Dexie保存数组到IndexedDB的DataCloneError问题

下面是几个可行的移除自定义原型、得到标准数组的方法:

  • JSON序列化/反序列化
    这是最快捷的方式,通过JSON转换会自动丢弃自定义原型,生成标准Array原型的新数组:

    // 替换yourArray为你要处理的数组
    const cleanedArray = JSON.parse(JSON.stringify(yourArray));
    

    注意:如果数组里有undefined,JSON序列化会把它转成null,如果需要保留undefined,可以用下面的方法。

  • 手动复制到新数组
    用展开运算符或者forEach遍历,把元素复制到原生空数组里,新数组的原型就是标准Array:

    // 展开运算符写法
    const cleanedArray = [...yourArray];
    
    // forEach写法
    const cleanedArray = [];
    yourArray.forEach(item => cleanedArray.push(item));
    
  • 使用Array.from()转换
    Array.from可以将带自定义原型的数组转为标准数组,同时保留原元素:

    const cleanedArray = Array.from(yourArray);
    

原理:IndexedDB的结构化克隆算法不支持带有自定义原型的对象/数组,把数组重置为标准Array原型后,就能被Dexie正常保存了。

内容的提问来源于stack exchange,提问作者Cynthia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:47:04