IDBObjectStore: openCursor() 方法
注意:此功能在 Web Workers 中可用。
openCursor() 方法是 IDBObjectStore 介面的一部分,它返回一個 IDBRequest 物件,並在單獨的執行緒中返回一個新的 IDBCursorWithValue 物件。用於透過遊標遍歷物件儲存。
語法
js
openCursor()
openCursor(query)
openCursor(query, direction)
引數
query可選-
要查詢的鍵或
IDBKeyRange。如果傳遞單個有效鍵,則預設範圍僅包含該鍵。如果未傳遞任何內容,則預設範圍將選擇此物件儲存中的所有記錄。 direction可選-
一個字串,用於告知遊標的移動方向。預設值為
next。有效值為:next-
遊標在儲存區的開頭開啟;然後,遊標以遞增的鍵順序返回所有記錄,包括重複項。
nextunique-
遊標在儲存區的開頭開啟;然後,遊標以遞增的鍵順序返回所有非重複記錄。
prev-
遊標在儲存區的末尾開啟;然後,遊標以遞減的鍵順序返回所有記錄,包括重複項。
prevunique-
遊標在儲存區的末尾開啟;然後,遊標以遞減的鍵順序返回所有非重複記錄。
返回值
一個 IDBRequest 物件,後續與此操作相關的事件會在此物件上觸發。
如果操作成功,請求的 result 屬性的值是
- 一個指向第一個匹配給定查詢的記錄的
IDBCursorWithValue物件 - 如果未找到匹配的記錄,則為
null。
異常
此方法可能會丟擲以下型別之一的DOMException:
InvalidStateErrorDOMException-
如果此
IDBObjectStore或IDBIndex已被刪除,則丟擲此異常。 TransactionInactiveErrorDOMException-
如果此
IDBObjectStore的事務不活躍,則會丟擲此異常。 DataErrorDOMException-
如果指定的鍵或鍵範圍無效,則丟擲此異常。
示例
在這個簡單的程式碼片段中,我們建立了一個事務,檢索了一個物件儲存,然後使用遊標遍歷物件儲存中的所有記錄。
js
const transaction = db.transaction("name", "readonly");
const objectStore = transaction.objectStore("name");
const request = objectStore.openCursor();
request.onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
// cursor.value contains the current record being iterated through
// 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-opencursor② |
瀏覽器相容性
載入中…
另見
- 使用 IndexedDB
- 開始事務:
IDBDatabase - 使用事務:
IDBTransaction - 設定鍵的範圍:
IDBKeyRange - 檢索和修改資料:
IDBObjectStore - 使用遊標:
IDBCursor - 參考示例:待辦事項通知(檢視即時示例)。