## 第九節: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()
- 第五節:使用實例
- 第一課時:動畫效果
- 第二課時:像素處理