IDBObjectStore: openKeyCursor() 方法
IDBObjectStore 介面的 openKeyCursor() 方法返回一個 IDBRequest 物件,其結果將被設定為一個 IDBCursor,可用於遍歷匹配的結果。用於使用遊標遍歷物件儲存的鍵。
要確定新增操作是否已成功完成,請監聽結果的 success 事件。
語法
js
openKeyCursor()
openKeyCursor(query)
openKeyCursor(query, direction)
引數
query可選-
要查詢的鍵範圍。如果傳入單個有效鍵,則預設為僅包含該鍵的範圍。如果未傳入任何內容,則預設為選擇此物件儲存中所有記錄的鍵範圍。
direction可選-
一個字串,告訴遊標的遍歷方向。預設為
next。有效值為:next-
遊標在儲存區的開頭開啟;然後,遊標按鍵的遞增順序返回所有記錄,包括重複項。
nextunique-
遊標在儲存區的開頭開啟;然後,遊標按鍵的遞增順序返回所有不重複的記錄。
prev-
遊標在儲存區的末尾開啟;然後,遊標按鍵的遞減順序返回所有記錄,包括重複項。
prevunique-
遊標在儲存區的末尾開啟;然後,遊標按鍵的遞減順序返回所有不重複的記錄。
返回值
一個 IDBRequest 物件,後續與此操作相關的事件會在此物件上觸發。
如果操作成功,請求的 result 屬性的值是
- 一個
IDBCursor物件,指向第一個匹配給定查詢的記錄 - 如果未找到匹配的記錄,則為
null。
異常
此方法可能會丟擲以下型別之一的DOMException:
InvalidStateErrorDOMException-
如果此
IDBObjectStore或IDBIndex已被刪除,則會引發此錯誤。 TransactionInactiveErrorDOMException-
如果此
IDBObjectStore的事務不活躍,則會丟擲此異常。 DataErrorDOMException-
如果指定的鍵或鍵範圍無效,則丟擲此異常。
示例
在這個簡單的片段中,我們建立了一個事務,檢索了一個物件儲存,然後使用遊標來遍歷物件儲存中的所有記錄。
js
const transaction = db.transaction("name", "readonly");
const objectStore = transaction.objectStore("name");
const request = objectStore.openKeyCursor();
request.onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
// cursor.key contains the key of the current record being iterated through
// note that there is no cursor.value, unlike for openCursor
// this is where you'd do something with the result
cursor.continue();
} else {
// no more results
}
};
規範
| 規範 |
|---|
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-openkeycursor① |
瀏覽器相容性
載入中…
另見
- 使用 IndexedDB
- 開始事務:
IDBDatabase - 使用事務:
IDBTransaction - 設定鍵的範圍:
IDBKeyRange - 檢索和修改資料:
IDBObjectStore - 使用遊標:
IDBCursor - 參考示例:待辦事項通知(檢視即時示例)。