IDBObjectStore: phương thức openCursor()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Note: This feature is available in Web Workers.
Phương thức openCursor() của giao diện IDBObjectStore trả về một đối tượng IDBRequest, và, trong một luồng riêng biệt, trả về một đối tượng IDBCursorWithValue mới. Được sử dụng để lặp qua một object store bằng con trỏ.
Cú pháp
openCursor()
openCursor(query)
openCursor(query, direction)
Tham số
queryOptional-
Một khóa hoặc
IDBKeyRangecần truy vấn. Nếu một khóa hợp lệ duy nhất được truyền, mặc định sẽ là một phạm vi chỉ chứa khóa đó. Nếu không truyền gì, mặc định sẽ là một phạm vi khóa chọn tất cả bản ghi trong object store này. directionOptional-
Một chuỗi cho biết con trỏ sẽ di chuyển theo hướng nào. Mặc định là
next. Các giá trị hợp lệ là:next-
Con trỏ được mở ở đầu store; sau đó, con trỏ trả về tất cả bản ghi, kể cả trùng lặp, theo thứ tự khóa tăng dần.
nextunique-
Con trỏ được mở ở đầu store; sau đó, con trỏ trả về tất cả bản ghi không trùng lặp, theo thứ tự khóa tăng dần.
prev-
Con trỏ được mở ở cuối store; sau đó, con trỏ trả về tất cả bản ghi, kể cả trùng lặp, theo thứ tự khóa giảm dần.
prevunique-
Con trỏ được mở ở cuối store; sau đó, con trỏ trả về tất cả bản ghi không trùng lặp, theo thứ tự khóa giảm dần.
Giá trị trả về
Một đối tượng IDBRequest mà các sự kiện tiếp theo liên quan đến thao tác này sẽ được kích hoạt trên đó.
Nếu thao tác thành công, giá trị của thuộc tính result của request là:
- một đối tượng
IDBCursorWithValuetrỏ đến bản ghi đầu tiên khớp với truy vấn đã cho nullnếu không tìm thấy bản ghi khớp nào.
Ngoại lệ
Phương thức này có thể gây ra một DOMException thuộc một trong các loại sau:
InvalidStateErrorDOMException-
Được ném nếu
IDBObjectStorehoặcIDBIndexnày đã bị xóa. TransactionInactiveErrorDOMException-
Được ném nếu giao dịch của
IDBObjectStorenày không hoạt động. DataErrorDOMException-
Được ném nếu khóa hoặc phạm vi khóa được chỉ định không hợp lệ.
Ví dụ
Trong đoạn mã đơn giản này, chúng ta tạo một giao dịch, truy xuất một object store, sau đó sử dụng một con trỏ để lặp qua tất cả bản ghi trong object store:
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 chứa bản ghi hiện tại đang được lặp qua
// đây là nơi bạn sẽ làm gì đó với kết quả
cursor.continue();
} else {
// không còn kết quả nào
}
};
Đặc tả kỹ thuật
| Thông số kỹ thuật |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbobjectstore-opencursor②> |
Tương thích trình duyệt
Xem thêm
- Sử dụng IndexedDB
- Bắt đầu giao dịch:
IDBDatabase - Sử dụng giao dịch:
IDBTransaction - Thiết lập phạm vi khóa:
IDBKeyRange - Truy xuất và thay đổi dữ liệu của bạn:
IDBObjectStore - Sử dụng con trỏ:
IDBCursor - Ví dụ tham khảo: To-do Notifications (Xem ví dụ trực tiếp).