The delete()
method of the IDBObjectStore
interface returns an IDBRequest
object, and, in a separate thread, deletes the specified record or records.
Either a key or an IDBKeyRange
can be passed, allowing one or multiple records to be deleted from a store. To delete all records in a store, use IDBObjectStore.clear
.
Bear in mind that if you are using a IDBCursor
, you can use the IDBCursor.delete()
method to more efficiently delete the current record — without having to explicitly look up the record's key.
Syntax
var request = objectStore.delete(keyorKeyRange);
Parameters
- Key
- The key of the record to be deleted, or an
IDBKeyRange
to delete all records with keys in range.
Return value
An IDBRequest
object on which subsequent events related to this operation are fired. The request.result
attribute is set to undefined.
Exceptions
This method may raise a DOMException
of the following types:
Exception | Description |
---|---|
TransactionInactiveError |
This object store's transaction is inactive. |
ReadOnlyError |
The object store's transaction mode is read-only. |
InvalidStateError |
The object store has been deleted. |
DataError |
Example
In the following code snippet, we open a read/write transaction on our database and delete one specific record out of our object store using delete()
— a sample record with the key "Walk dog". For a full working example, see our To-do Notifications app (view example live.)
// Let us open our database var DBOpenRequest = window.indexedDB.open("toDoList", 4); DBOpenRequest.onsuccess = function(event) { note.innerHTML += '<li>Database initialised.</li>'; // store the result of opening the database in the db variable. This is used a lot below db = DBOpenRequest.result; // Run the deleteData() function to delete a record from the database deleteData(); }; function deleteData() { // open a read/write db transaction, ready for deleting the data var transaction = db.transaction(["toDoList"], "readwrite"); // report on the success of the transaction completing, when everything is done transaction.oncomplete = function(event) { note.innerHTML += '<li>Transaction completed.</li>'; }; transaction.onerror = function(event) { note.innerHTML += '<li>Transaction not opened due to error: ' + transaction.error + '</li>'; }; // create an object store on the transaction var objectStore = transaction.objectStore("toDoList"); // Make a request to delete the specified record out of the object store var objectStoreRequest = objectStore.delete("Walk dog"); objectStoreRequest.onsuccess = function(event) { // report the success of our request note.innerHTML += '<li>Request successful.</li>'; }; };
Specification
Specification | Status | Comment |
---|---|---|
Indexed Database API The definition of 'delete()' in that specification. |
Recommendation | |
Indexed Database API 2.0 The definition of 'delete()' in that specification. |
Editor's Draft |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 23webkit 24 (unprefixed) |
(Yes) | 10 moz 16.0 (16.0) |
10, partial | 15 | 7.1 |
Available in workers | (Yes) | ? | 37.0 (37.0) | ? | (Yes) | ? |
Indexed Database 2.0 | 58 | ? | ? | ? | 45 | ? |
Feature | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | 22.0 (22.0) | 1.0.1 | 10 | 22 | 8 |
Available in workers | (Yes) | (Yes) | ? | 37.0 (37.0) | (Yes) | ? | (Yes) | ? |
Indexed Database 2.0 | 58 | 58 | ? | ? | ? | ? | 45 | ? |
See also
- Using IndexedDB
- Starting transactions:
IDBDatabase
- Using transactions:
IDBTransaction
- Setting a range of keys:
IDBKeyRange
- Retrieving and making changes to your data:
IDBObjectStore
- Using cursors:
IDBCursor
- Reference example: To-do Notifications (view example live.)