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 API の IDBCursorWithValue
インターフェイスは、データベース内の複数のレコードを走査・反復するのに用いるカーソルを表します。value
プロパティがある以外は、IDBCursor
と同じです。
カーソルは、反復対象のインデックスまたはオブジェクトストアを表す反復元を持ちます。さらに、範囲内での位置を持ち、レコードキーの順番の昇順もしくは降順に動きます。カーソルにより、アプリケーションはカーソルの範囲の全レコードを非同期で処理できます。
同時に保持できるカーソルの数は無制限です。あるカーソルを表すとき、常に同じ IDBCursorWithValue
オブジェクトを取得できます。操作は対象のインデックスまたはオブジェクトストアで行われます。
メモ: この機能はウェブワーカー内で利用可能です。
インスタンスメソッド
親インターフェイスの IDBCursor
からメソッドを継承します。
インスタンスプロパティ
親インターフェイスの IDBCursor
からプロパティを継承します。
IDBCursorWithValue.value
読取専用-
現在のカーソルの値を返します。
例
この例では、トランザクションを作成し、オブジェクトストアを取得し、カーソルを用いてオブジェクトストア内の全レコードを走査します。カーソルを用いる場合、キーでデータを選択する必要は無く、単に全部を取得できます。また、ループ中のそれぞれの繰り返しにおいて、カーソルオブジェクトが指している現在のレコードのデータを cursor.value.foo
で取得できます。動く例全体は、IDBCursor example を参照してください。(動く例を見る)
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② |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キーの範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)