IDBCursor: continuePrimaryKey() 方法
注意:此功能在 Web Workers 中可用。
continuePrimaryKey() 方法屬於 IDBCursor 介面,用於將游標移動到鍵匹配 key 引數且主鍵匹配 primaryKey 引數的物件。
一個典型的用例是,在之前關閉的游標處恢復迭代,而無需逐個比較鍵。
在載入新的游標資料之前多次呼叫此方法(例如,在同一個 onsuccess 處理程式中呼叫兩次 continuePrimaryKey())將在第二次呼叫時丟擲 InvalidStateError,因為游標的 got value 標誌已被取消設定。
此方法僅對來自索引的游標有效。將其用於來自物件儲存的游標會引發錯誤。
語法
js
continuePrimaryKey(key, primaryKey)
引數
key-
用於定位游標的鍵。
primaryKey-
用於定位游標的主鍵。
返回值
無(undefined)。
異常
此方法可能會丟擲以下型別之一的DOMException:
TransactionInactiveErrorDOMException-
如果此
IDBCursor的事務處於非活動狀態,則丟擲此異常。 DataErrorDOMException-
如果
key引數滿足以下任一條件,則丟擲此異常:- 鍵不是有效鍵。
- 鍵小於或等於游標當前位置,並且游標的方向為
next或nextunique。 - 鍵大於或等於游標當前位置,並且游標的方向為
prev或prevunique。
InvalidStateErrorDOMException-
如果游標當前正在迭代或已迭代到末尾,則丟擲此異常。
InvalidAccessErrorDOMException-
如果游標的方向不是
prev或next,則丟擲此異常。
示例
以下是如何在上次訪問後恢復標籤為 "javascript" 的所有文章的迭代:
js
let request = articleStore.index("tag").openCursor();
let count = 0;
let unreadList = [];
request.onsuccess = (event) => {
let cursor = event.target.result;
if (!cursor) {
return;
}
let lastPrimaryKey = getLastIteratedArticleId();
if (lastPrimaryKey > cursor.primaryKey) {
cursor.continuePrimaryKey("javascript", lastPrimaryKey);
return;
}
// update lastIteratedArticleId
setLastIteratedArticleId(cursor.primaryKey);
// preload 5 articles into the unread list;
unreadList.push(cursor.value);
if (++count < 5) {
cursor.continue();
}
};
規範
| 規範 |
|---|
| Indexed Database API 3.0 # ref-for-dom-idbcursor-continueprimarykey① |
瀏覽器相容性
載入中…
另見
- 使用 IndexedDB
- 開始事務:
IDBDatabase - 使用事務:
IDBTransaction - 設定鍵的範圍:
IDBKeyRange - 檢索和修改資料:
IDBObjectStore - 使用遊標:
IDBCursor - 參考示例:待辦事項通知(檢視即時示例)。