ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 第九节: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`对象。它的参数是要写入数据库的新的值。