## 第九节:IDBCursor
`IDBCursor`对象代表指针对象,用来遍历数据仓库(`IDBObjectStore`)或索引(`IDBIndex`)的记录。
`IDBCursor`对象一般通过`IDBObjectStore.openCursor()`方法获得。
~~~
var transaction = db.transaction(['rushAlbumList'], 'readonly');
var objectStore = transaction.objectStore('rushAlbumList');
objectStore.openCursor(null, 'next').onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
var listItem = document.createElement('li');
listItem.innerHTML = cursor.value.albumTitle + ', ' + cursor.value.year;
list.appendChild(listItem);
console.log(cursor.source);
cursor.continue();
} else {
console.log('Entries all displayed.');
}
};
};
~~~
`IDBCursor`对象的属性。
* `IDBCursor.source`:返回正在遍历的对象仓库或索引。
* `IDBCursor.direction`:字符串,表示指针遍历的方向。共有四个可能的值:next(从头开始向后遍历)、nextunique(从头开始向后遍历,重复的值只遍历一次)、prev(从尾部开始向前遍历)、prevunique(从尾部开始向前遍历,重复的值只遍历一次)。该属性通过`IDBObjectStore.openCursor()`方法的第二个参数指定,一旦指定就不能改变了。
* `IDBCursor.key`:返回当前记录的主键。
* `IDBCursor.value`:返回当前记录的数据值。
* `IDBCursor.primaryKey`:返回当前记录的主键。对于数据仓库(objectStore)来说,这个属性等同于 IDBCursor.key;对于索引,IDBCursor.key 返回索引的位置值,该属性返回数据记录的主键。
`IDBCursor`对象有如下方法。
* `IDBCursor.advance(n)`:指针向前移动 n 个位置。
* `IDBCursor.continue()`:指针向前移动一个位置。它可以接受一个主键作为参数,这时会跳转到这个主键。
* `IDBCursor.continuePrimaryKey()`:该方法需要两个参数,第一个是`key`,第二个是`primaryKey`,将指针移到符合这两个参数的位置。
* `IDBCursor.delete()`:用来删除当前位置的记录,返回一个`IDBRequest`对象。该方法不会改变指针的位置。
* `IDBCursor.update()`:用来更新当前位置的记录,返回一个`IDBRequest`对象。它的参数是要写入数据库的新的值。
- 第一章:音视频
- 第一节:概述
- 第二节:媒体元素
- 第三节:视频元素
- 第四节:音频元素
- 第四节:事件
- 第二章:高德地图
- 第三章:Storage 接口
- 第一节:概述
- 第二节:属性和方法
- 第三节:事件
- 第四章:IndexedDB
- 第一节:概述
- 第二节:基本概念
- 第三节:indexedDB 对象
- 第四节:IDBRequest 对象
- 第五节:IDBDatabase 对象
- 第六节:IDBObjectStore 对象
- 第七节:IDBTransaction 对象
- 第八节:IDBIndex 对象
- 第九节:IDBCursor 对象
- 第十节:IDBKeyRange 对象
- 第十一节:操作流程
- 第五章:Canvas
- 第一节:概述
- 第二节:绘制图像
- 第一课时:路径
- 第二课时:线型
- 第三课时:矩形
- 第四课时:弧线
- 第五课时:文本
- 第六课时:渐变色和图像填充
- 第七课时:阴影
- 第三节:图像处理
- 第一课时:写入图像
- 第二课时:像素读写
- 第三课时:保存和恢复
- 第四课时:画布
- 第五课时:图像变换
- 第四节:元素方法
- 第一课时:toDataURL()
- 第二课时:toBlob()
- 第五节:使用实例
- 第一课时:动画效果
- 第二课时:像素处理