IDBCursor

IndexedDB APIIDBCursor インターフェイスはデータベースの複数レコードを横断したり繰り返すためのカーソル (en-US)です。

このカーソルはどのインデックスやオブジェクトをループしているかを示す元です。これは範囲内の位置を示す持ち、レコードのキー順に増/減して動きます。カーソルはアプリケーションからカーソル範囲内の全レコードに非同期に処理できるようにします。

一度に無制限の数のカーソルを持つことができます。あるカーソルを表す同一の IDBCursor オブジェクトを取得できます。操作はインデックスやオブジェクトストアに対して実行されます。

注: この機能は Web Worker 内で利用可能です。

プロパティ

IDBCursor.source (en-US) 読取専用
カーソルが繰り返しているIDBObjectStore (en-US)IDBIndex (en-US) を返します。この関数は、カーソルが現在繰り返されていたり、繰り返しが終わりを過ぎたり、トランザクションがアクティブでなくても、null や例外を返しません。
IDBCursor.direction (en-US) 読取専用
カーソルの横断の向きを返します。取りうる値については Constants を見てください。
IDBCursor.key (en-US) 読取専用
カーソル位置のレコードのキーを返します。カーソルが範囲外の場合、undefined にセットされます。カーソルキーはあらゆるデータ型となりえます。
IDBCursor.value 読取専用
カーソル位置のレコードの値を返します。カーソルの値はあらゆるデータ型となりえます。
IDBCursor.primaryKey (en-US) 読取専用
カーソルの現在有効な主キーを返します。カーソルが現在繰り返されていたり範囲外で繰り返されていた場合、これは undefined にセットされます。カーソルの主キーはあらゆるデータ型となりえます。

メソッド

IDBCursor.advance()
Sets the number times a cursor should move its position forward.
IDBCursor.continue()
Advances the cursor to the next position along its direction, to the item whose key matches the optional key parameter.
IDBCursor.continuePrimaryKey() (en-US)
Sets the cursor to the given index key and primary key given as arguments.
IDBCursor.delete() (en-US)
Returns an IDBRequest object, and, in a separate thread, deletes the record at the cursor's position, without changing the cursor's position. This can be used to delete specific records.
IDBCursor.update() (en-US)
Returns an IDBRequest object, and, in a separate thread, updates the value at the current position of the cursor in the object store. This can be used to update specific records.

Constants

非推奨 Gecko 13 (Firefox 13 / Thunderbird 13 / SeaMonkey 2.10)

この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

これらの constants は利用できません — Gecko 25 で削除されました。代わりに直接 string constants を使う必要があります。(バグ 891944)

  • NEXT : "next" : The cursor shows all records, including duplicates. It starts at the lower bound of the key range and moves upwards (monotonically increasing in the order of keys).
  • NEXTUNIQUE : "nextunique" : The cursor shows all records, excluding duplicates. If multiple records exist with the same key, only the first one iterated is retrieved. It starts at the lower bound of the key range and moves upwards.
  • PREV : "prev" : The cursor shows all records, including duplicates. It starts at the upper bound of the key range and moves downwards (monotonically decreasing in the order of keys).
  • PREVUNIQUE : "prevunique" : The cursor shows all records, excluding duplicates. If multiple records exist with the same key, only the first one iterated is retrieved. It starts at the upper bound of the key range and moves downwards.

In this simple fragment we create a transaction, retrieve an object store, then use a cursor to iterate through all the records in the object store. The cursor does not require us to select the data based on a key; we can just grab all of it. Also note that in each iteration of the loop, you can grab data from the current record under the cursor object using cursor.value.foo. For a complete working example, see our IDBCursor example (view example live.)

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

  objectStore.openCursor().onsuccess = function(event) {
    var cursor = event.target.result;
    if(cursor) {
      var listItem = document.createElement('li');
      listItem.innerHTML = cursor.value.albumTitle + ', ' + cursor.value.year;
      list.appendChild(listItem);

      cursor.continue();
    } else {
      console.log('Entries all displayed.');
    }
  };
}

仕様

仕様書 策定状況 コメント
Indexed Database API 2.0
cursor の定義
勧告  

ブラウザー実装状況

BCD tables only load in the browser

関連情報