IDBFactory: open() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

メモ: この機能はウェブワーカー内で利用可能です。

open()IDBFactory インターフェイスのメソッドで、データベースへの接続を開くことを要求します。

このメソッドは即座に IDBOpenDBRequest オブジェクトを返し、そして非同期でデータベースを開きます。 操作が成功した場合、このメソッドから返されるリクエストオブジェクトに result の属性として接続のための新しい IDBDatabase オブジェクトが設定されて、success イベントが発生します。

upgradeneeded, blocked, versionchange イベントが発生することがあります。

構文

js
open(name)
open(name, version)

引数

name

データベースの名前。

version 省略可

省略可。データベースを開くバージョン。バージョンが提供されずにデータベースが存在した場合、データベースへの接続はバージョンを変更せずに開かれます。 バージョンが提供されず、データベースも存在しなかった場合、バージョン番号 1 が生成されます。

返値

この要求に関連のある連続したイベントが発生する IDBOpenDBRequest オブジェクト。

操作に成功した場合、リクエストの result プロパティの値は、データベースへの接続を表す IDBDatabase オブジェクトとなります。

例外

TypeError

version の値がゼロかマイナスの値、または数値でない場合。

open を現在の仕様書の version 引数を付けて呼び出す例です。

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

次のコードスニペットは、データベースを開く要求をして、成功の場合と失敗の場合のイベントハンドラーを登録しています。完璧に動作する例は、To-do Notifications アプリケーション (動く例を見る) を見てください。

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

// データベースのバージョン 4 を開きましょう。
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

// これら 2 個のイベントハンドラーは、データベースが正常に開かれたか、
// 失敗した時に動作します。
DBOpenRequest.onerror = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "データベースの読み込みに失敗しました。";
};

DBOpenRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "データベースを初期化しました。";

  // データベースを開いた結果を変数 db に保存します。
  // これはトランザクションを開くときなど、
  // 後でたくさん使います。
  db = DBOpenRequest.result;
};

仕様書

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

ブラウザーの互換性

BCD tables only load in the browser

関連情報