Skip to content

indexDB 使用

打开数据库

const request = indexedDB.open("MyDatabase", 1); // 参数:数据库名、版本号

数据库初始化(监听事件)

  • 结构变更只能在这里面进行
  • 触发情况:
    • 第一次创建open
    • open时传入版本号变化
request.onupgradeneeded = function(event) {
  const db = event.target.result;
  // 创建对象仓库(类似于表)
  const store = db.createObjectStore("users", { keyPath: "id" }); // 主键为 id
  // 可选:创建索引
  store.createIndex("nameIndex", "name", { unique: false });
};

连接成功

request.onsuccess = function(event) {
  const db = event.target.result;
  console.log("数据库打开成功");

  // 可以进行增删改查等操作
  const transaction = db.transaction("users", "readwrite");
  const store = transaction.objectStore("users");
  store.add({ id: 1, name: "Alice", age: 25 });
};

连接失败

request.onerror = function(event) {
  console.error("数据库打开失败", event.target.error);
};

基本操作

操作示例代码
添加数据store.add({ id: 1, name: "Tom" })
获取数据store.get(1)
更新数据store.put({ id: 1, name: "Tom Updated" })
删除数据store.delete(1)
遍历数据store.openCursor().onsuccess = function(event)
清空仓库store.clear()