indexeddb升级版本号的时候,怎么给旧的表增加索引?

如题,升级版本号的时候 createObjectStore报错,因为表已经创建过了,索引也是创建表的时候创建的
怎么才能在数据库版本升级的时候给旧表增加新的索引??

阅读 3.5k
2 个回答
新手上路,请多包涵

你需要创建新的对象仓库,或删除不再需要的上一版本中的对象仓库。如果你需要修改一个已存在的对象仓库(例如要修改 keyPath),你必须先删除原先的对象仓库然后使用新的设置创建。(注意,这样会丢失对象仓库里的数据,如果你需要保存这些信息,你要在数据库版本更新前读取出来并保存在别处)。

  request.onupgradeneeded = function(event) {
    var db = event.target.result;
    var upgradeTransaction = event.target.transaction;
    var objectStore;
    if (!db.objectStoreNames.contains("my-store")) {
      objectStore = db.createObjectStore("my-store");
    } else {
      objectStore = upgradeTransaction.objectStore('my-store');
    }

    if (!objectStore.indexNames.contains("my-index")) {
      objectStore.createIndex("my-index", "status", { unique: false });
    }
  };
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题