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

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 deleteIndex() của giao diện IDBObjectStore hủy index có tên được chỉ định trong cơ sở dữ liệu đã kết nối, được sử dụng trong quá trình nâng cấp phiên bản.

Lưu ý rằng phương thức này chỉ được gọi từ callback của chế độ giao dịch VersionChange. Lưu ý rằng phương thức này đồng bộ sửa đổi thuộc tính IDBObjectStore.indexNames.

Cú pháp

js
deleteIndex(indexName)

Tham số

indexName

Tên của index hiện có cần xóa.

Giá trị trả về

Không có (undefined).

Ngoại lệ

InvalidStateError DOMException

Được ném nếu phương thức không được gọi từ callback của chế độ giao dịch versionchange.

TransactionInactiveError DOMException

Được ném nếu giao dịch mà IDBObjectStore này thuộc về không hoạt động (ví dụ: đã bị xóa hoặc loại bỏ.)

NotFoundError DOMException

Được ném nếu không có index nào có tên trùng khớp (có phân biệt hoa thường) trong cơ sở dữ liệu.

Ví dụ

Trong ví dụ sau, bạn có thể thấy trình xử lý onupgradeneeded được sử dụng để cập nhật cấu trúc cơ sở dữ liệu nếu một cơ sở dữ liệu với số phiên bản cao hơn được tải. IDBObjectStore.createIndex được sử dụng để tạo các index mới trên object store, sau đó chúng ta xóa các index cũ không cần thiết bằng deleteIndex(). Để xem ví dụ hoạt động đầy đủ, hãy tham khảo ứng dụng To-do Notifications của chúng tôi (xem ví dụ trực tiếp).

js
let db;

// Mở cơ sở dữ liệu
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

// hai trình xử lý sự kiện này hoạt động khi cơ sở dữ liệu được mở thành công hoặc không
DBOpenRequest.onerror = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Error loading database.";
};

DBOpenRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Database initialized.";

  // Lưu kết quả mở cơ sở dữ liệu vào biến db. Biến này được sử dụng nhiều ở dưới
  db = event.target.result;

  // Chạy hàm displayData() để điền danh sách tác vụ với tất cả dữ liệu danh sách việc cần làm đã có trong IDB
  displayData();
};

// Sự kiện này xử lý việc cần tạo phiên bản mới của cơ sở dữ liệu
// Hoặc là chưa từng tạo trước đó, hoặc số phiên bản mới đã được gửi qua dòng
// window.indexedDB.open ở trên
// nó chỉ được triển khai trong các trình duyệt gần đây
DBOpenRequest.onupgradeneeded = (event) => {
  const db = event.target.result;

  db.onerror = (event) => {
    note.appendChild(document.createElement("li")).textContent =
      "Error loading database.";
  };

  // Tạo một objectStore cho cơ sở dữ liệu này
  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // xác định các mục dữ liệu mà objectStore sẽ chứa

  objectStore.createIndex("hours", "hours", { unique: false });
  objectStore.createIndex("minutes", "minutes", { unique: false });
  objectStore.createIndex("day", "day", { unique: false });
  objectStore.createIndex("month", "month", { unique: false });
  objectStore.createIndex("year", "year", { unique: false });
  objectStore.createIndex("notified", "notified", { unique: false });

  objectStore.deleteIndex("seconds");
  objectStore.deleteIndex("contact");
};

Đặc tả kỹ thuật

Specification
Indexed Database API 3.0
# ref-for-dom-idbobjectstore-deleteindex①

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

Xem thêm