IDBObjectStore: deleteIndex() Methode
Hinweis: Dieses Feature ist verfügbar in Web Workers.
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
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).
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
- Verwendung von IndexedDB
- Starten von Transaktionen:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Festlegen eines Schlüsselbereichs:
IDBKeyRange
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Verwendung von Cursorn:
IDBCursor
- Referenzbeispiel: To-do Notifications (Beispiel live ansehen).