IndexedDB API の IDBIndex インターフェイスは、データベース内のインデックスへの非同期アクセスを提供します。インデックスは、別のオブジェクト ストアでレコードを検索するための一種のオブジェクト ストアです。参照オブジェク トストアと呼ばれます。このインターフェースを使用してデータを取得します。
主キーまたはインデックスを使用して、オブジェクト ストア内のレコードを取得できます。インデックスを使用すると、主キー以外のレコードを格納するオブジェクトの値のプロパティを使用して、オブジェクト ストアのレコードを検索できます。
インデックスは永続的な Key-Value ストレージであり、そのレコードの値部分は、参照されるオブジェクト ストア内のレコードのキー部分です。インデックス内のレコードは、参照されるオブジェクト ストア内のレコードが挿入、更新、または削除されるたびに自動的に入力されます。インデックス内の各レコードは、参照されるオブジェクト ストア内の1つのレコードのみを指すことができます。ただし、複数のインデックスが同じオブジェクト ストアを参照できます。オブジェクト ストアが変更されると、オブジェクト ストアを参照するすべてのインデックスは自動的に更新されます。
範囲内のキーのセットを取得できます。詳細については、IDBKeyRange を参照してください。
注: この機能は Web Workers で使用できます
継承元: EventTarget
最後に、各レコードを反復処理し、データをHTMLテーブルに挿入します。完全な実例については、IndexedDB-examples デモリポジトリ を参照してください(例をライブで表示します)。
function displayDataByIndex() {
tableEntry.innerHTML = '';
var transaction = db.transaction(['contactsList'], 'readonly');
var objectStore = transaction.objectStore('contactsList');
var myIndex = objectStore.index('lName');
myIndex.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if(cursor) {
var 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('Entries all displayed.');
}
};
};
| 表示内容: |
| 表示内容: |