You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Edge扩展游戏IndexedDB保存函数失效,报对象仓库未找到错误

解决IndexedDB对象仓库未找到的错误

错误提示Uncaught NotFoundError: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.的核心原因是:你没有在数据库初始化阶段创建名为store的对象仓库。IndexedDB要求必须通过onupgradeneeded事件来创建对象仓库,这是初始化数据库结构的唯一入口。

修复后的完整代码

保存函数修改版

function saveGameData(databaseName, storeName, data) {
  const request = indexedDB.open(databaseName, 1);
  
  request.onerror = () => {
    console.error("Database error:", request.error);
  };

  // 数据库首次创建或版本升级时触发,用于初始化对象仓库
  request.onupgradeneeded = (event) => {
    const db = event.target.result;
    // 避免重复创建对象仓库导致报错
    if (!db.objectStoreNames.contains(storeName)) {
      // 创建对象仓库,若需要指定主键(比如数据里的id字段),可以添加keyPath参数:
      // db.createObjectStore(storeName, { keyPath: "id" });
      db.createObjectStore(storeName);
    }
  };
  
  request.onsuccess = () => {
    const db = request.result;
    const transaction = db.transaction(storeName, "readwrite");
    const objectStore = transaction.objectStore(storeName);
    
    // 使用固定key"gameData"存储,方便后续直接通过key读取
    const saveRequest = objectStore.put(data, "gameData");
    
    saveRequest.onerror = () => {
      console.error("Error saving data:", saveRequest.error);
    };
    
    saveRequest.onsuccess = () => {
      console.log("Data saved successfully");
    };

    // 事务完成后关闭数据库连接,释放资源
    transaction.oncomplete = () => {
      db.close();
    };
  };
}

修正定时保存逻辑

你的init函数中,data是在初始化时创建的,后续定时调用时不会更新money和monkey的最新值,需要把data的创建移到定时器内部:

function init() {
  setInterval(() => {
    // 每次保存时获取最新的游戏数据
    const data = { 
      money: money, 
      monkey: monkey 
    };
    saveGameData("myDatabase", "store", data); 
  }, 2000);
}

关键要点说明

  • onupgradeneeded事件:只有当数据库首次被打开,或者打开时指定的版本号高于当前数据库版本时才会触发,必须在这里完成对象仓库的创建或修改。
  • 对象仓库主键:如果你的游戏数据需要唯一标识,创建仓库时可以指定keyPath(比如{ keyPath: "id" }),或者在调用put时传入第二个参数作为固定key(如示例中的"gameData"),这样后续读取数据时可以直接通过这个key获取。
  • 数据库连接:每次操作完成后记得关闭数据库连接,避免占用浏览器资源。

内容的提问来源于stack exchange,提问作者Levi Daniels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 02:00:22