IDBObjectStore.put

This article is in need of a technical review.

« IDBObjectStore

The IDBObjectStore.put method returns an IDBRequest object, and, in a separate thread, creates a structured clone of the value and stores the cloned value in the object store.

If the record is successfully stored, then a success event is fired on the returned request object with the result set to the key for the stored record, and the transaction set to the transaction in which this object store is opened.

The put method is an update or insert method. See also the IDBObjectStore.add method.

Syntax

IDBRequest put (any value, optional any key);

Example

var updateNotified = function() {
  // first open up a transaction
  var objectStore = db.transaction(['toDoList'], "readwrite").objectStore('toDoList');

  // get the to-do list object that has this title as it's title
  var request = objectStore.get(title);

  request.onsuccess = function() {
    // grab the data object returned as the result
    var data = request.result;
 
    // update the notified value in the object to "yes"
    data.notified = "yes";
 
    // create another request that inserts the item back into the database
    var requestUpdate = objectStore.put(data);
  };
};

Parameters

value
The value to be stored.
key
The key to use to identify the record. If unspecified, it results to null.

Returns

IDBRequest
A request object on which subsequent events related to this operation are fired.

Exceptions

This method may raise a DOMException with a DOMError of the following types:

Exception Description
ReadOnlyError The transaction associated with this operation is in read-only mode.
TransactionInactiveError This IDBObjectStore's transaction is inactive.
DataError

Any of the following conditions apply:

  • The object store uses in-line keys or has a key generator, and a key parameter was provided.
  • The object store uses out-of-line keys and has no key generator, and no key parameter was provided.
  • The object store uses in-line keys but no key generator, and the object store's key path does not yield a valid key.
  • The key parameter was provided but does not contain a valid key.
InvalidStateError The IDBObjectStore has been deleted or removed.
DataCloneError The data being stored could not be cloned by the internal structured cloning algorithm.

Specifications

Specification Status Comment
Indexed Database API Candidate Recommendation  

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 12 4.0 (2.0) 10 17 Not supported
count() 23 10.0 (10.0) 10 17 Not supported
Feature Android Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Basic support 4.4 6.0 (6.0) 1.0.1 10 17 Not supported
count() 4.4 ? 1.0.1 10 17 Not supported

Be careful in Chrome as it still implements the old specification along the new one. Similarly it still has the prefixed webkitIndexedDB property even if the unprefixed indexedDB is present.

See also

  • Using IndexedDB
  • The reference application for the examples in this reference: To-do Notifications (view example live.) Not every snippet appears in this example, but every example uses the same data structure and syntax, and they will make sense in the context of this example.

Document Tags and Contributors

Contributors to this page: chrisdavidmills
Last updated by: chrisdavidmills,