IDBFactory: open() 方法

注意: 此功能在 Web 工作线程 中可用。

IDBFactory 接口的 open() 方法请求打开 数据库连接

该方法会立即返回一个 IDBOpenDBRequest 对象,并异步执行打开操作。如果操作成功,则会在从该方法返回的请求对象上触发 success 事件,其 result 属性将设置为新 IDBDatabase 对象(用于连接)。

可能会触发 upgradeneededblockedversionchange 事件。

语法

js
open(name)
open(name, version)

参数

name

数据库的名称。

version 可选

可选。要打开数据库的版本。如果未提供版本且数据库存在,则将打开与数据库的连接,而不会更改其版本。如果未提供版本且数据库不存在,则将使用版本 1 创建数据库。

返回值

一个 IDBOpenDBRequest 对象,将在该对象上触发与该请求相关的后续事件。

如果操作成功,则请求的 result 属性的值将是表示与数据库的连接的 IDBDatabase 对象。

异常

TypeError

如果 version 的值不是大于零的数字,则会抛出此异常。

示例

使用当前规范的 version 参数调用 open 的示例

js
const request = window.indexedDB.open("toDoList", 4);

在以下代码片段中,我们请求打开数据库,并包含用于成功和错误情况的处理程序。有关完整的运行示例,请参见我们的 待办事项通知 应用程序 (查看实时示例)。

js
const note = document.querySelector("ul");

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

// these two event handlers act on the database being opened
// successfully, or not
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 later on, for opening
  // transactions and suchlike.
  db = DBOpenRequest.result;
};

规范

规范
Indexed Database API 3.0
# ref-for-dom-idbfactory-open②

浏览器兼容性

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

另请参阅