IDBLocaleAwareKeyRange
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
非標準: この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。
IndexedDB API の IDBLocaleAwareKeyRange
は、IDBKeyRange
の Firefox 固有バージョンです。全く同じように動作し、同じプロパティとメソッドを持ちますが、locale
の値を指定して生成したインデックスを表す IDBIndex
オブジェクトとともに使用することを意図しています。(createIndex()
の引数 options
を参照してください) すなわち、ロケールを意識した並べ替えが有効になっています。
インスタンスメソッド
このインターフェイスは、親インターフェイスの IDBKeyRange
のメソッドを全て継承します。
インスタンスプロパティ
このインターフェイスは、親インターフェイスの IDBKeyRange
のプロパティを全て継承します。
ただし、IDBLocaleAwareKeyRange
は IDBKeyRange.bound
を独自に実装していることを覚えておいてください。これは、bound()
は下限が上限未満であるかをチェックし、そうなっていない場合は例外を投げるためです。ロケールを意識したインデックスでは、比較の意味はロケールによって異なり、たとえばリトアニア語では Y は I と K の間に並びます。IDBKeyRange
と IDBLocaleAwareKeyRange
の唯一の違いは、後者はこのチェックを行わないことです。
開発者は、ロケールを意識したインデックスを扱う際は、常に IDBLocaleAwareKeyRange
を用いるべきです。
例
js
function displayData() {
const keyRangeValue = IDBLocaleAwareKeyRange.bound("A", "F");
const transaction = db.transaction(["fThings"], "readonly");
const objectStore = transaction.objectStore("fThings");
const myIndex = objectStore.index("lName");
myIndex.openCursor(keyRangeValue).onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
const tableRow = document.createElement("tr");
tableRow.innerHTML =
`<td>${cursor.value.id}</td>` +
`<td>${cursor.value.lName}</td>` +
`<td>${cursor.value.fName}</td>` +
`<td>${cursor.value.jTitle}</td>` +
`<td>${cursor.value.company}</td>` +
`<td>${cursor.value.eMail}</td>` +
`<td>${cursor.value.phone}</td>` +
`<td>${cursor.value.age}</td>`;
tableEntry.appendChild(tableRow);
cursor.continue();
} else {
console.log("全エントリーを表示しました。");
}
};
}
仕様書
現在、どの仕様書にも入っていません。
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キーの範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)