IDBCursor: continue() メソッド
メモ: この機能はウェブワーカー内で利用可能です。
continue()
は IDBCursor
インターフェイスのメソッドで、カーソルを現在の方向に次の位置、任意のキーパラメーターに一致するキーを持つアイテムまで進めます。キーを指定しない場合、カーソルはその方向に基づいて、すぐ隣の位置へ進みます。
構文
js
continue()
continue(key)
引数
key
省略可-
このカーソルを進めるためのキーです。
返値
なし (undefined
)。
例外
このメソッドは次の内いずれかの DOMException
を発生させることがあります。
TransactionInactiveError
DOMException
-
この
IDBCursor
のトランザクションがアクティブではありません。 DataError
DOMException
-
key 引数が以下の状態のうちのいずれかである可能性があります。
- key が妥当なキーではない
- キーがこのカーソルの位置と同じかそれより小さく、カーソルの方向が
next
またはnextunique
である。 - キーがこのカーソルの位置と同じかそれより大きく、カーソルの方向が
prev
またはprevunique
である。
InvalidStateError
DOMException
-
カーソルが現在走査中または末尾を越えて走査しました。
例
この単純で部分的な実例ではトランザクションを作り、オブジェクトストアを取得した後、オブジェクトストア内の全ての反復処理するためカーソルを使用しています。カーソルはキーに基づいてデータを選択するには必要ありません。その全てを捕らえることができます。また、それぞれのループ内での繰り返しでカーソルオブジェクトを用い、cursor.value.foo
とすることで、現在のレコードからカーソルの下のデータを取得できることには注目です。完全な例については IDBCursor の例 (ライブデモを見る) を参照してください。
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-dom-idbcursor-continue① |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キーの範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- 参考例: To-do Notifications (動く例を見る)