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.');
}
};
}
| 表示内容: |
| 表示内容: |