我正在使用indexedDB(通过npm的idb Package 器)来存储表示音频通道数据的2D Float32数组。它在一段时间内工作正常,但是,当其中一个数组的长度达到大约16658432
时,idb崩溃,标题中出现异常。堆栈跟踪非常无用,因为我将React与Next.js结合使用,但是从我所看到的来看,它似乎在idb的缓存部分崩溃。注意:我 * 可以 * 存储多个大型数组没有问题,但一旦其中任何一个超过这个“限制”,一切都会崩溃
这是一个我必须处理的限制,还是可以通过某种方式解决?我可以将二维数组拆分为两个数组,并将它们存储为单独的条目,但这不是一个理想的解决方案,一旦它们也增长,将导致同样的问题。
只是一个简单的 Package 器围绕idb的事务:
export const asyncPut = async (
dbName: string,
tableName: string,
key: string,
value: any // [Float32Array, Float32Array]
): Promise<void> => {
try {
const db = await asyncOpenDb(dbName, tableName);
const transaction = db.transaction(tableName, "readwrite");
await transaction.objectStore(tableName).put(value, key);
} catch (error) {
// I catch the error here
console.error("**IDB Error:", error);
}
};
1条答案
按热度按时间wfveoks01#
我刚刚在Chrome中测试了这个,他们可能已经改进了错误,因为你已经测试。
当我尝试插入这个数组时,出现错误:
它超过了单个对象的最大大小:
测试地点: