The deleteIndex()
method of the IDBObjectStore
interface destroys the index with the specified name in the connected database, used during a version upgrade.
Note that this method must be called only from a VersionChange
transaction mode callback. Note that this method synchronously modifies the IDBObjectStore.indexNames
property.
In the following example you can see the onupgradeneeded
handler being used to update the database structure if a database with a higher version number is loaded. IDBObjectStore.createIndex
is used to create new indexes on the object store, after which we delete the unneeded old indexes with deleteIndex()
. For a full working example, see our To-do Notifications app (view example live).
let db;
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onerror = (event) => {
note.innerHTML += "<li>Error loading database.</li>";
};
DBOpenRequest.onsuccess = (event) => {
note.innerHTML += "<li>Database initialized.</li>";
db = event.target.result;
displayData();
};
DBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
db.onerror = (event) => {
note.innerHTML += "<li>Error loading database.</li>";
};
const objectStore = db.createObjectStore("toDoList", {
keyPath: "taskTitle",
});
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");
};