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
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.
lowerOpenOptional-
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. upperOpenOptional-
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ệ
DataErrorDOMException-
Được ném ra khi một trong các điều kiện sau xảy ra:
- Tham số
lowerhoặcupperkhô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ở.
- Tham số
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" và "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" và "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" và "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.
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
| Specification |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbkeyrange-bound①> |
Tương thích trình duyệt
Xem thêm
- Dùng IndexedDB
- Bắt đầu transaction:
IDBDatabase - Dùng transaction:
IDBTransaction - Thiết lập một phạm vi khóa:
IDBKeyRange - Truy xuất và sửa đổi dữ liệu của bạn:
IDBObjectStore - Dùng cursor:
IDBCursor - Ví dụ tham khảo: To-do Notifications (Xem ví dụ trực tiếp).