IDBCursorWithValue

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.

IndexedDB APIIDBCursorWithValue インターフェイスは、データベース内の複数のレコードを走査・反復するのに用いるカーソルを表します。value プロパティがある以外は、IDBCursor と同じです。

カーソルは、反復対象のインデックスまたはオブジェクトストアを表す反復元を持ちます。さらに、範囲内での位置を持ち、レコードキーの順番の昇順もしくは降順に動きます。カーソルにより、アプリケーションはカーソルの範囲の全レコードを非同期で処理できます。

同時に保持できるカーソルの数は無制限です。あるカーソルを表すとき、常に同じ IDBCursorWithValue オブジェクトを取得できます。操作は対象のインデックスまたはオブジェクトストアで行われます。

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

IDBCursor IDBCursorWithValue

インスタンスメソッド

親インターフェイスの IDBCursor からメソッドを継承します。

インスタンスプロパティ

親インターフェイスの IDBCursor からプロパティを継承します。

IDBCursorWithValue.value 読取専用

現在のカーソルの値を返します。

この例では、トランザクションを作成し、オブジェクトストアを取得し、カーソルを用いてオブジェクトストア内の全レコードを走査します。カーソルを用いる場合、キーでデータを選択する必要は無く、単に全部を取得できます。また、ループ中のそれぞれの繰り返しにおいて、カーソルオブジェクトが指している現在のレコードのデータを cursor.value.foo で取得できます。動く例全体は、IDBCursor example を参照してください。(動く例を見る)

js
function displayData() {
  const transaction = db.transaction(["rushAlbumList"], "readonly");
  const objectStore = transaction.objectStore("rushAlbumList");

  objectStore.openCursor().onsuccess = (event) => {
    const cursor = event.target.result;
    if (cursor) {
      const listItem = document.createElement("li");
      listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
      list.appendChild(listItem);

      cursor.continue();
    } else {
      console.log("全エントリーを表示しました。");
    }
  };
}

仕様書

Specification
Indexed Database API 3.0
# ref-for-idbcursorwithvalue②

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
IDBCursorWithValue
value
Available in workers

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Requires a vendor prefix or different name for use.
Has more compatibility info.

関連情報