This translation is incomplete. Please help translate this article from English

The IDBObjectStore interface of the IndexedDB API represents an object store in a database. Records within an object store are sorted according to their keys. This sorting enables fast insertion, look-up, and ordered retrieval.


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. This is for adding new records to an object store.
Creates and immediately returns an IDBRequest object, and clears this object store in a separate thread. This is for deleting all current records out of an object store.
returns an IDBRequest object, and, in a separate thread, deletes the current object store. This is for deleting individual records out of an object store.
returns an IDBRequest object, and, in a separate thread, returns the object store selected by the specified key. This is for retrieving specific records from an object store.
Creates a new index during a version upgrade, returning a new IDBIndex object in the connected database.
Destroys the specified index in the connected database, used during a version upgrade.
Opens an index from this object store after which it can, for example, be used to return a sequence of records sorted by that index using a cursor.
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. This is for updating existing records in an object store when the transaction's mode is readwrite.
Returns an IDBRequest object, and, in a separate thread, returns a new IDBCursorWithValue object. Used for iterating through an object store by primary key with a cursor.


IDBObjectStore.indexNames Read only
A list of the names of indexes on objects in this object store.
IDBObjectStore.keyPath Read only
The key path of this object store. If this attribute is null, the application must provide a key for each modification operation. Read only
The name of this object store.
IDBObjectStore.transaction Read only
The name of the transaction to which this object store belongs.
IDBObjectStore.autoIncrement Read only
The value of the auto increment flag for this object store.

Obsolete methods

Returns an IDBRequest object, and, in a separate thread, returns a new IDBCursorWithValue. Used for iterating through an object store with a key. However, this is now handled by IDBObjectStore.openCursor, if a value is specified.


This example shows a variety of different uses of ObjectStores, from updating the data structure with IDBObjectStore.createIndex inside an onupgradeneeded function, to adding a new item to our object store with IDBObjectStore.add. For a full working example, see our To-do Notifications app (view example live.)

// Let us open our database
var DBOpenRequest ="toDoList", 4);

DBOpenRequest.onsuccess = function(event) {
  note.innerHTML += '<li>Database initialised.</li>';
  // store the result of opening the database in the db variable.
  db = DBOpenRequest.result;

// 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
// line above
DBOpenRequest.onupgradeneeded = function(event) {
  var db =;
  db.onerror = function(event) {
    note.innerHTML += '<li>Error loading database.</li>';

  // Create an objectStore for this database
  var 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 });
  note.innerHTML += '<li>Object store created.</li>';

// Create a new item to add in to the object store
var newItem = [
  { taskTitle: "Walk dog", hours: 19, minutes: 30, day: 24, month: 'December', year: 2013, notified: "no" }

// open a read/write db transaction, ready for adding the data
var transaction = db.transaction(["toDoList"], "readwrite");
// report on the success of opening the transaction
transaction.oncomplete = function(event) {
  note.innerHTML += '<li>Transaction opened for task addition.</li>';

transaction.onerror = function(event) {
  note.innerHTML += '<li>Transaction not opened due to error. Duplicate items not allowed.</li>';

// create an object store on the transaction
var objectStore = transaction.objectStore("toDoList");
// add our newItem object to the object store
var objectStoreRequest = objectStore.add(newItem[0]);        

objectStoreRequest.onsuccess = function(event) {
  note.innerHTML += '<li>New item added to database.</li>';


Specification Status Comment
Indexed Database API
La definición de 'IDBObjectStore' en esta especificación.

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 23webkit
10 moz
16.0 (16.0)
10, partial 15 7.1
Feature Android Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Basic support 4.4 22.0 (22.0) 1.0.1 10 22 Sin soporte

See also