IDBCursor: phương thức delete()
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 delete() của giao diện IDBCursor trả về một đối tượng IDBRequest và, trên một luồng riêng, xóa bản ghi tại vị trí của con trỏ mà không thay đổi vị trí đó. Khi bản ghi đã bị xóa, giá trị của con trỏ được đặt thành null.
Lưu ý rằng bạn không thể gọi delete() (hoặc IDBCursor.update()) trên các con trỏ lấy từ IDBIndex.openKeyCursor(). Với nhu cầu như vậy, bạn phải dùng IDBIndex.openCursor() thay thế.
Cú pháp
delete()
Tham số
Không có.
Giá trị trả về
Một đối tượng IDBRequest, trên đó các sự kiện tiếp theo liên quan đến thao tác này sẽ được phát ra.
Nếu thao tác thành công, giá trị của thuộc tính result của request sẽ là undefined.
Ngoại lệ
Phương thức này có thể ném ra một DOMException thuộc một trong các kiểu sau:
TransactionInactiveErrorDOMException-
Được ném ra nếu transaction của IDBCursor này không hoạt động.
ReadOnlyErrorDOMException-
Được ném ra nếu chế độ transaction là chỉ đọc.
InvalidStateErrorDOMException-
Được ném ra nếu con trỏ được tạo bằng
IDBindex.openKeyCursor, đang được duyệt, hoặc đã duyệt quá phần cuối.
Ví dụ
Trong đoạn ví dụ đơn giản này, chúng ta tạo một transaction, lấy một object store, rồi dùng một con trỏ để duyệt qua tất cả các bản ghi trong object store. Nếu albumTitle của con trỏ hiện tại là "Grace under pressure", chúng ta xóa toàn bộ bản ghi đó bằng const request = cursor.delete();.
Con trỏ không yêu cầu chúng ta chọn dữ liệu theo khóa; chúng ta chỉ cần lấy toàn bộ dữ liệu. Lưu ý thêm rằng ở mỗi vòng lặp, bạn có thể lấy dữ liệu từ bản ghi hiện tại dưới đối tượng con trỏ bằng cursor.value.foo. Để xem ví dụ hoàn chỉnh, hãy xem ví dụ IDBCursor (xem bản chạy trực tiếp).
function deleteResult() {
list.textContent = "";
const transaction = db.transaction(["rushAlbumList"], "readwrite");
const objectStore = transaction.objectStore("rushAlbumList");
objectStore.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
if (cursor.value.albumTitle === "Grace under pressure") {
const request = cursor.delete();
request.onsuccess = () => {
console.log(
"Deleted that mediocre album from 1984. Even Power windows is better.",
);
};
} else {
const listItem = document.createElement("li");
listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
list.appendChild(listItem);
}
cursor.continue();
} else {
console.log("Entries displayed.");
}
};
}
Thông số kỹ thuật
| Specification |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbcursor-delete①> |
Tương thích trình duyệt
Xem thêm
- Using IndexedDB
- Bắt đầu transaction:
IDBDatabase - Sử dụng transaction:
IDBTransaction - Thiết lập một 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 - Tham chiếu ví dụ: To-do Notifications (xem bản chạy trực tiếp).