--- title: IDBCursor slug: Web/API/IDBCursor tags: - API - Database - IDBCursor - IndexedDB - Interface - NeedsTranslation - Reference - Storage - TopicStub translation_of: Web/API/IDBCursor ---
{{APIRef("IndexedDB")}}
IndexedDB API の IDBCursor
インターフェイスはデータベースの複数レコードを横断したり繰り返すためのカーソルです。
このカーソルはどのインデックスやオブジェクトをループしているかを示す元です。これは範囲内の位置を示す持ち、レコードのキー順に増/減して動きます。カーソルはアプリケーションからカーソル範囲内の全レコードに非同期に処理できるようにします。
一度に無制限の数のカーソルを持つことができます。あるカーソルを表す同一の IDBCursor
オブジェクトを取得できます。操作はインデックスやオブジェクトストアに対して実行されます。
{{AvailableInWorkers}}
undefined
にセットされます。カーソルキーはあらゆるデータ型となりえます。undefined
にセットされます。カーソルの主キーはあらゆるデータ型となりえます。key
parameter.これらの constants は利用できません — Gecko 25 で削除されました。代わりに直接 string constants を使う必要があります。({{ bug(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.');
}
};
}
仕様書 | 策定状況 | コメント |
---|---|---|
{{SpecName('IndexedDB', '#idl-def-IDBCursor', 'cursor')}} | {{Spec2('IndexedDB')}} |
{{Compat("api.IDBCursor")}}