NodeJS 有时indexedDB存储数据的时间太长

vbkedwbf  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(166)

我在使用indexedDB时遇到了一个奇怪的问题。每当我安装另一个扩展时,有时indexedDB会花费很多时间将数据写入db。我试图通过使用indexedDB API和基于indexedDB的库来解决这个问题,但似乎没有任何工作。
下面是我使用的代码

function updateRecord({
  sessionId,
  ...record
}) {
  return new Promise(async(resolve, reject) => {
    try {
      console.log(
        '%c Inside update record ',
        'background: #222; color: #bada55'
      );
      const dbPromise = await idb.openDB('testbuddyExtension', 1, {
        upgrade(db) {
          const store = db.createObjectStore('testbuddy', {
            keyPath: 'sessionId',
          });
          store.createIndex('keyIndex', 'tabId');
        },
      });

      const existingRecord = await dbPromise.get('testbuddy', sessionId);

      const updatedPayload = {
        ...record,
        ...(existingRecord ? existingRecord : {}),
      };

      await dbPromise.put('testbuddy', { ...updatedPayload,
        sessionId
      });
      console.log(
        '%c Everything is now done! ',
        'background: #222; color: #bada55'
      );
      resolve(true);
    } catch (error) {
      console.log('%c Error found! ', 'background: #222; color: #bada55');
      console.log({
        error
      });
      reject(false);
    }
  });
}

here是一个视频,可能会帮助你理解。而且,它并不是因为我一次写了很多数据而变慢的。我曾经使用相同的脚本一次写下兆字节的数据。

mqxuamgl

mqxuamgl1#

这个问题现在解决了。正如你在视频中看到的,当我启用另一个扩展时,我的扩展出现了一些错误。这是因为每当启用扩展时,我都会运行一些脚本。我忘了说分机号了。

chrome.management.onEnabled.addListener(() => {
  //This code was running whenever any extension is installed
  destroyDatabase().catch((error) => {
    console.error('Failed to delete database', error);
  });
  reExecuteScript();
});

这是应该做的。

chrome.management.onEnabled.addListener((data) => {
  if (data.id === chrome.runtime.id) {
    destroyDatabase().catch((error) => {
      console.error('Failed to delete database', error);
    });
    reExecuteScript();
  }
});

相关问题