IDBObjectStore.delete() - Web APIs 编辑
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.
Note:
This feature is available in Web Workers.Syntax
var request = objectStore.delete(Key); var request = objectStore.delete(KeyRange);
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>';
};
};
Specifications
Specification | Status | Comment |
---|---|---|
Indexed Database API 2.0 The definition of 'delete()' in that specification. | Recommendation | |
Indexed Database API 2.0 The definition of 'delete()' in that specification. | Recommendation |
Browser compatibility
BCD tables only load in the browser
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.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论