## 第八节:IDBIndex 对象
`IDBIndex`对象代表数据库的索引,通过这个对象可以获取数据库里面的记录。数据记录的主键默认就是带有索引,`IDBIndex`对象主要用于通过除主键以外的其他键,建立索引获取对象。
`IDBIndex`是持久性的键值对存储。只要插入、更新或删除数据记录,引用的对象库中的记录,索引就会自动更新。
`IDBObjectStore.index()`方法可以获取`IDBIndex`对象。
~~~
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.');
}
};
~~~
`IDBIndex`对象有以下属性。
* `IDBIndex.name`:字符串,索引的名称。
* `IDBIndex.objectStore`:索引所在的对象仓库。
* `IDBIndex.keyPath`:索引的主键。
* `IDBIndex.multiEntry`:布尔值,针对`keyPath`为数组的情况,如果设为`true`,创建数组时,每个数组成员都会有一个条目,否则每个数组都只有一个条目。
* `IDBIndex.unique`:布尔值,表示创建索引时是否允许相同的主键。
`IDBIndex`对象有以下方法,它们都是异步的,立即返回的都是一个 IDBRequest 对象。
* `IDBIndex.count()`:用来获取记录的数量。它可以接受主键或`IDBKeyRange`对象作为参数,这时只返回符合主键的记录数量,否则返回所有记录的数量。
* `IDBIndex.get(key)`:用来获取符合指定主键的数据记录。
* `IDBIndex.getKey(key)`:用来获取指定的主键。
* `IDBIndex.getAll()`:用来获取所有的数据记录。它可以接受两个参数,都是可选的,第一个参数用来指定主键,第二个参数用来指定返回记录的数量。如果省略这两个参数,则返回所有记录。由于获取成功时,浏览器必须生成所有对象,所以对性能有影响。如果数据集比较大,建议使用 IDBCursor 对象。
* `IDBIndex.getAllKeys()`:该方法与`IDBIndex.getAll()`方法相似,区别是获取所有主键。
* `IDBIndex.openCursor()`:用来获取一个 IDBCursor 对象,用来遍历索引里面的所有条目。
* `IDBIndex.openKeyCursor()`:该方法与`IDBIndex.openCursor()`方法相似,区别是遍历所有条目的主键。
- 第一章:音视频
- 第一节:概述
- 第二节:媒体元素
- 第三节:视频元素
- 第四节:音频元素
- 第四节:事件
- 第二章:高德地图
- 第三章:Storage 接口
- 第一节:概述
- 第二节:属性和方法
- 第三节:事件
- 第四章:IndexedDB
- 第一节:概述
- 第二节:基本概念
- 第三节:indexedDB 对象
- 第四节:IDBRequest 对象
- 第五节:IDBDatabase 对象
- 第六节:IDBObjectStore 对象
- 第七节:IDBTransaction 对象
- 第八节:IDBIndex 对象
- 第九节:IDBCursor 对象
- 第十节:IDBKeyRange 对象
- 第十一节:操作流程
- 第五章:Canvas
- 第一节:概述
- 第二节:绘制图像
- 第一课时:路径
- 第二课时:线型
- 第三课时:矩形
- 第四课时:弧线
- 第五课时:文本
- 第六课时:渐变色和图像填充
- 第七课时:阴影
- 第三节:图像处理
- 第一课时:写入图像
- 第二课时:像素读写
- 第三课时:保存和恢复
- 第四课时:画布
- 第五课时:图像变换
- 第四节:元素方法
- 第一课时:toDataURL()
- 第二课时:toBlob()
- 第五节:使用实例
- 第一课时:动画效果
- 第二课时:像素处理