IDBObjectStore: phương thức openKeyCursor()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Phương thức openKeyCursor() của giao diện IDBObjectStore trả về một đối tượng IDBRequest mà kết quả sẽ được đặt thành một IDBCursor có thể được sử dụng để lặp qua các kết quả khớp. Được sử dụng để lặp qua các khóa của một object store bằng con trỏ.

Để xác định xem thao tác đã hoàn tất thành công hay chưa, hãy lắng nghe sự kiện success của kết quả.

Cú pháp

js
openKeyCursor()
openKeyCursor(query)
openKeyCursor(query, direction)

Tham số

query Optional

Phạm vi khóa cầ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.

direction Optional

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 IDBCursor trỏ đến bản ghi đầu tiên khớp với truy vấn đã cho
  • null nế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:

InvalidStateError DOMException

Được ném nếu IDBObjectStore hoặc IDBIndex này đã bị xóa.

TransactionInactiveError DOMException

Được ném nếu giao dịch của IDBObjectStore này không hoạt động.

DataError DOMException

Đượ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:

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 chứa khóa của bản ghi hiện tại đang được lặp qua
    // lưu ý rằng không có cursor.value, khác với openCursor
    // đâ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-openkeycursor①

Tương thích trình duyệt

Xem thêm