IDBFactory: open() 方法

Baseline 已广泛支持

此功能已成熟,并可在多种设备和浏览器版本上运行。自 2021 年 9 月起,所有浏览器均已支持此功能。

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

open() 方法是 IDBFactory 接口的一个方法,用于请求打开一个数据库连接

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

可能会触发 upgradeneededblockedversionchange 事件。

语法

js
open(name)
open(name, version)

参数

name

数据库的名称。

version 可选

可选。用于打开数据库的版本号。如果未提供版本号且数据库已存在,则会以不更改其版本的方式打开数据库连接。如果未提供版本号且数据库不存在,则会以版本号 1 创建数据库。

返回值

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

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

异常

TypeError

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

示例

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

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②

浏览器兼容性

另见