如何解决在循环中更新记录时,Electron上的Dexie.js占用了大量存储空间
我有一个Electron应用程序,用户可以在其中上传文件。我从该文件中提取了一些信息,并使用Dexie将这些数据存储在IndexedDB中。
这是Dexie.js的设置:
import Dexie from "dexie";
const db = new Dexie("raw");
db.version(1).stores({
files:
"++id,name,path,status,total,remainingUsers,progress,scores,cap,userColumn,leadingAt,limit,calls",});
export default db;
await db.files.add({
name: file.name,path: file.path,status: progress === total ? "done" : "pending",cap: datasetCap || Number.parseFloat(cap),limit: Number.parseInt(limit),});
在另一个屏幕上,用户可以启动一个调用API的过程,并使用此API的结果更新IndexedDB中的记录。此过程是在循环内进行的,我再次调用Dexie来更新记录:
for (let i = 0; i < file.remainingUsers.length; i++) {
if (!_processing.current || calls >= file.limit) break;
const currentUser = file.remainingUsers[i];
const result = // calls an API
progress += 1;
calls += 1;
const score = parsescore(result);
scores[currentUser] = score;
if (_processing.current) {
setIndicators({ progress,calls });
}
// Updating the record
await db.files.update(file.id,{
scores,remainingUsers: file.remainingUsers.slice(i + 1),});
}
该应用程序运行良好。但是我的测试人员注意到,他的Mac在运行应用程序时(在进行循环并更新记录的屏幕中)没有存储空间。
通过一些调查,我发现当我更新IndexedDB上的记录时,我的应用程序的用户目录至少增加了20Mb的空间。在处理的一千条记录中,这会占用大量空间!
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。