IDBObjectStore: deleteIndex() Methode

Baseline Widely available

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

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die deleteIndex() Methode des IDBObjectStore Interfaces zerstört den Index mit dem angegebenen Namen in der verbundenen Datenbank, verwendet während eines Versionsupgrades.

Beachten Sie, dass diese Methode nur aus einem VersionChange-Transaktionsmodus-Callback aufgerufen werden muss. Beachten Sie, dass diese Methode die IDBObjectStore.indexNames Eigenschaft synchron ändert.

Syntax

js
deleteIndex(indexName)

Parameter

indexName

Der Name des zu entfernenden vorhandenen Index.

Rückgabewert

Keiner (undefined).

Ausnahmen

InvalidStateError DOMException

Wird ausgelöst, wenn die Methode nicht aus einem versionchange-Transaktionsmodus-Callback aufgerufen wurde.

TransactionInactiveError DOMException

Wird ausgelöst, wenn die Transaktion, zu der dieses IDBObjectStore gehört, nicht aktiv ist (z. B. gelöscht oder entfernt wurde).

NotFoundError DOMException

Wird ausgelöst, wenn in der Datenbank kein Index mit dem angegebenen Namen (Groß-/Kleinschreibung beachten) vorhanden ist.

Beispiele

Im folgenden Beispiel sehen Sie den onupgradeneeded Handler, der verwendet wird, um die Datenbankstruktur zu aktualisieren, wenn eine Datenbank mit einer höheren Versionsnummer geladen wird. IDBObjectStore.createIndex wird verwendet, um neue Indizes im Objekt-Store zu erstellen, danach löschen wir die nicht benötigten alten Indizes mit deleteIndex(). Für ein vollständiges funktionierendes Beispiel sehen Sie sich unsere To-do Notifications App an (Beispiel live ansehen).

js
let db;

// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

// these two event handlers act on the database being opened successfully, or not
DBOpenRequest.onerror = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Error loading database.";
};

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

  // store the result of opening the database in the db variable. This is used a lot below
  db = event.target.result;

  // Run the displayData() function to populate the task list with all the to-do list data already in the IDB
  displayData();
};

// This event handles the event whereby a new version of the database needs to be created
// Either one has not been created before, or a new version number has been submitted via the
// window.indexedDB.open line above
//it is only implemented in recent browsers
DBOpenRequest.onupgradeneeded = (event) => {
  const db = event.target.result;

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

  // Create an objectStore for this database
  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // define what data items the objectStore will contain

  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");
};

Spezifikationen

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

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch