IndexedDB API の IDBKeyRange インターフェイスは、キーに使用される一部のデータ型の連続間隔を表します。レコードは、キーまたはキーの範囲を使用して IDBObjectStore および IDBIndex オブジェクトから取得できます。下限と上限を使用して範囲を制限できます。たとえば、値の範囲A~Zのキーのすべての値を反復処理できます。
キー範囲は、単一の値、または上限と下限または端点を持つ範囲にすることができます。キー範囲に上限と下限の両方がある場合、それは制限されます。限界がない場合は、それは無制限です。制限されたキー範囲は、開いている(エンドポイントが除外されている)か、閉じている(エンドポイントが含まれている)かのいずれかです。特定の範囲内のすべてのキーを取得するには、次のコード構造を使用できます:
範囲 | コード |
---|---|
All keys ≧ x | IDBKeyRange.lowerBound(x)
|
All keys > x | IDBKeyRange.lowerBound(x, true)
|
All keys ≦ y | IDBKeyRange.upperBound(y)
|
All keys < y | IDBKeyRange.upperBound(y, true)
|
All keys ≧ x && ≦ y | IDBKeyRange.bound(x, y)
|
All keys > x && < y | IDBKeyRange.bound(x, y, true, true)
|
All keys > x && ≦ y | IDBKeyRange.bound(x, y, true, false)
|
All keys ≧ x && < y | IDBKeyRange.bound(x, y, false, true)
|
The key = z | IDBKeyRange.only(z)
|
次の条件が当てはまる場合、key はキー範囲内にあります:
注: この機能は Web Workers で使用できます
注: キー範囲を試すことができるより完全な例については、IDBKeyRange-サンプルリポジトリ をご覧ください(サンプルもライブでご覧ください)。
function displayData() { var keyRangeValue = IDBKeyRange.bound("A", "F"); var transaction = db.transaction(['fThings'], 'readonly'); var objectStore = transaction.objectStore('fThings'); objectStore.openCursor(keyRangeValue).onsuccess = function(event) { var cursor = event.target.result; if(cursor) { var listItem = document.createElement('li'); listItem.innerHTML = '<strong>' + cursor.value.fThing + '</strong>, ' + cursor.value.fRating; list.appendChild(listItem); cursor.continue(); } else { console.log('Entries all displayed.'); } }; }
表示内容: |
表示内容: |