我正在使用indexedDB(通过npm的idb包装器)来存储表示音频通道数据的2D Float32数组。它可以正常工作一段时间,但是当其中一个数组的长度达到大约16658432时,idb会崩溃,并显示标题中的异常。由于我正在使用React和Next.js,因此堆栈跟踪无用,但从我挖掘出来的信息来看,它似乎在idb的缓存部分崩溃了。请注意:我可以存储多个大型数组,没有问题,但一旦它们中的任何一个超过这个“限制”,所有内容都会崩溃。
这是我必须处理的限制,还是可以以某种方式解决?我可以将2D数组拆分为两个数组并将它们作为单独的条目存储,但这是一个不太理想的解决方案,一旦它们增长过大就会导致相同的问题。
只是对idb事务的简单包装器:
这是我必须处理的限制,还是可以以某种方式解决?我可以将2D数组拆分为两个数组并将它们作为单独的条目存储,但这是一个不太理想的解决方案,一旦它们增长过大就会导致相同的问题。
只是对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);
}
};
DOMException
的错误属性。 - Pavel Kozlovsky