微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在循环中更新记录时,Electron上的Dexie.js占用了大量存储空间

如何解决在循环中更新记录时,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;

我将从文件提取的记录添加到此files记录中:

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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?