IDBOpenDBRequest

注意: 此功能在 Web Workers 中可用。

IndexedDB API 的 IDBOpenDBRequest 接口提供了访问打开或删除数据库请求结果的途径(使用 IDBFactory.openIDBFactory.deleteDatabase 执行),使用特定的事件处理程序属性。

EventTarget IDBRequest IDBOpenDBRequest

实例属性

还从其父级 IDBRequestEventTarget 继承属性。.

实例方法

没有方法,但从其父级 IDBRequestEventTarget 继承方法。

事件

在父接口 IDBRequestEventTarget 上定义的事件也可以在 IDBOpenDBRequest 对象上派发。

使用 addEventListener() 监听这些通用和特定事件,或者将事件监听器分配给此接口的 oneventname 属性。

此接口特有的事件是

阻塞

当对数据库的打开连接阻止了同一数据库上的 versionchange 事务时触发。也可以通过 onblocked 属性访问。

升级需要

当尝试打开的数据库版本号高于其当前版本时触发。也可以通过 onupgradeneeded 属性访问。

示例

在以下示例中,您可以看到 onupgradeneeded 处理程序用于在加载具有更高版本号的数据库时更新数据库结构。有关完整的运行示例,请参见我们的 待办事项通知 应用程序 (查看示例演示.)

js
let db;

// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

// these event handlers act on the database being opened.
DBOpenRequest.onerror = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Error loading database.";
};

DBOpenRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Database initialized.";

  // store the result of opening the database in the db
  // variable. This is used a lot below
  db = DBOpenRequest.result;

  // Run the displayData() function to populate the task
  // list with all the to-do list data already in the IDB
  displayData();
};

// This event handles the event whereby a new version of
// the database needs to be created Either one has not
// been created before, or a new version number has been
// submitted via the window.indexedDB.open line above
// it is only implemented in recent browsers
DBOpenRequest.onupgradeneeded = (event) => {
  const db = event.target.result;

  db.onerror = (event) => {
    note.appendChild(document.createElement("li")).textContent =
      "Error loading database.";
  };

  // Create an objectStore for this database
  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // define what data items the objectStore will contain

  objectStore.createIndex("hours", "hours", { unique: false });
  objectStore.createIndex("minutes", "minutes", { unique: false });
  objectStore.createIndex("day", "day", { unique: false });
  objectStore.createIndex("month", "month", { unique: false });
  objectStore.createIndex("year", "year", { unique: false });
  objectStore.createIndex("notified", "notified", { unique: false });
};

规范

规范
Indexed Database API 3.0
# idbopendbrequest

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅