IDBKeyRange: phương thức tĩnh bound()

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 tĩnh bound() của giao diện IDBKeyRange tạo một phạm vi khóa mới với các giới hạn trên và dưới đã chỉ định. Các giới hạn có thể là mở, tức là loại trừ giá trị ở đầu mút, hoặc đóng, tức là bao gồm giá trị ở đầu mút. Mặc định, các giới hạn là đóng.

Cú pháp

js
IDBKeyRange.bound(lower, upper)
IDBKeyRange.bound(lower, upper, lowerOpen)
IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)

Tham số

lower

Chỉ định giới hạn dưới của phạm vi khóa mới.

upper

Chỉ định giới hạn trên của phạm vi khóa mới.

lowerOpen Optional

Cho biết giới hạn dưới có loại trừ giá trị đầu mút hay không. Mặc định là false.

upperOpen Optional

Cho biết giới hạn trên có loại trừ giá trị đầu mút hay không. Mặc định là false.

Giá trị trả về

IDBKeyRange: Phạm vi khóa vừa được tạo.

Ngoại lệ

DataError DOMException

Được ném ra khi một trong các điều kiện sau xảy ra:

  • Tham số lower hoặc upper không phải là khóa hợp lệ.
  • Khóa dưới lớn hơn khóa trên.
  • Khóa dưới và khóa trên bằng nhau và một trong hai giới hạn là mở.

Ví dụ

Ví dụ sau minh họa cách dùng một phạm vi khóa có giới hạn. Ở đây chúng ta khai báo keyRangeValue = IDBKeyRange.bound("A", "F"); - một phạm vi giữa "A""F". Chúng ta mở một transaction (dùng IDBTransaction) và một object store, rồi mở một cursor bằng IDBObjectStore.openCursor, với keyRangeValue là giá trị phạm vi khóa tùy chọn. Điều này có nghĩa là cursor chỉ truy xuất các bản ghi có khóa nằm trong phạm vi đó. Phạm vi này bao gồm các giá trị "A""F", vì chúng ta chưa khai báo rằng đó là các giới hạn mở. Nếu dùng IDBKeyRange.bound("A", "F", true, true);, thì phạm vi sẽ không bao gồm "A""F", mà chỉ gồm các giá trị ở giữa.

Note: Để có ví dụ đầy đủ hơn cho phép bạn thử nghiệm phạm vi khóa, hãy xem thư mục idbkeyrange trong repo indexeddb-examples. (Xem ví dụ trực tiếp nữa.

js
function displayData() {
  const keyRangeValue = IDBKeyRange.bound("A", "F");

  const transaction = db.transaction(["fThings"], "readonly");
  const objectStore = transaction.objectStore("fThings");

  objectStore.openCursor(keyRangeValue).onsuccess = (event) => {
    const cursor = event.target.result;
    if (cursor) {
      const listItem = document.createElement("li");
      listItem.textContent = `${cursor.value.fThing}, ${cursor.value.fRating}`;
      list.appendChild(listItem);

      cursor.continue();
    } else {
      console.log("Entries all displayed.");
    }
  };
}

Thông số kỹ thuật

Thông số kỹ thuật
Indexed Database API 3.0
# ref-for-dom-idbkeyrange-bound①

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

Xem thêm