IDBObjectStore: openKeyCursor() メソッド
IDBObjectStore
インターフェイスの openKeyCursor()
メソッドは、result
がマッチした結果の走査に用いることができる IDBCursor
に設定される IDBRequest
オブジェクトを返します。カーソルを用いてオブジェクトストア内のキーを走査するのに用います。
追加を行う操作が正常に完了したかを判定するには、結果の success
イベントを監視してください。
構文
openKeyCursor()
openKeyCursor(query)
openKeyCursor(query, direction)
引数
query
省略可-
問い合わせを行うキー範囲です。単一のキーが渡された場合は、そのキーのみを含むキー範囲になります。何も渡されなかった場合は、オブジェクトストア内の全レコードを選択するキー範囲になります。
direction
省略可-
カーソルが動く方向を決める
IDBCursorDirection
です。 有効な値は"next"
、"nextunique"
、"prev"
、"prevunique"
です。デフォルトは"next"
です。
返値
この操作に関係する今後のイベントが発火する IDBRequest
オブジェクトです。
操作に成功した場合は、この要求の result
プロパティの値は以下になります。
- 与えられたクエリーにマッチする最初のレコードを指す
IDBCursor
オブジェクト - マッチするレコードが見つからなかった場合は
null
例外
このメソッドは、以下の種類のいずれかの DOMException
を投げる可能性があります。
InvalidStateError
DOMException
-
この
IDBObjectStore
またはIDBIndex
が削除済のとき投げられます。 TransactionInactiveError
DOMException
-
この
IDBObjectStore
のトランザクションが実行中でないとき投げられます。 DataError
DOMException
-
指定のキーまたはキー範囲が無効であるとき投げられます。
例
このシンプルな断片では、トランザクションを生成し、オブジェクトストアを取得し、カーソルを用いてオブジェクトストア内の全レコードを走査します。
const transaction = db.transaction("name", "readonly");
const objectStore = transaction.objectStore("name");
const request = objectStore.openKeyCursor();
request.onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
// cursor.key に走査中の現在のレコードのキーが入っている
// openCursor と違って cursor.value は無いことに注意
// ここで結果を用いて何かする
cursor.continue();
} else {
// もう結果は無い
}
};
仕様書
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbobjectstore-openkeycursor① |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キー範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)