Web/API/IDBObjectStore

From Get docs

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.

Note: This feature is available in Web Workers.

Properties

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.
IDBObjectStore.name
The name of this object store.
IDBObjectStore.transaction Read only
The IDBTransaction object to which this object store belongs.
IDBObjectStore.autoIncrement Read only
The value of the auto increment flag for this object store.

Methods

IDBObjectStore.add()
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.
IDBObjectStore.clear()
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.
IDBObjectStore.count()
Returns an IDBRequest object, and, in a separate thread, returns the total number of records that match the provided key or IDBKeyRange. If no arguments are provided, it returns the total number of records in the store.
IDBObjectStore.createIndex()
Creates a new index during a version upgrade, returning a new IDBIndex object in the connected database.
IDBObjectStore.delete()
returns an IDBRequest object, and, in a separate thread, deletes the store object selected by the specified key. This is for deleting individual records out of an object store.
IDBObjectStore.deleteIndex()
Destroys the specified index in the connected database, used during a version upgrade.
IDBObjectStore.get()
Returns an IDBRequest object, and, in a separate thread, returns the store object store selected by the specified key. This is for retrieving specific records from an object store.
IDBObjectStore.getKey()
Returns an IDBRequest object, and, in a separate thread retrieves and returns the record key for the object in the object stored matching the specified parameter.
IDBObjectStore.getAll()
Returns an IDBRequest object retrieves all objects in the object store matching the specified parameter or all objects in the store if no parameters are given.
IDBObjectStore.getAllKeys()
Returns an IDBRequest object retrieves record keys for all objects in the object store matching the specified parameter or all objects in the store if no parameters are given.
IDBObjectStore.index()
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.
IDBObjectStore.openCursor()
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.openKeyCursor() 
Returns an IDBRequest object, and, in a separate thread, returns a new IDBCursor. Used for iterating through an object store with a key.
IDBObjectStore.put()
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.

Example

This example shows a variety of different uses of object stores, 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 ([[../../../../../../mdn.github.io/to-do-notifications/index|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 db.
  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 window.indexedDB.open line above
DBOpenRequest.onupgradeneeded = function(event) {
  var db = event.target.result;
 
  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 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. Duplicate items not allowed.</li>';
};

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

objectStoreRequest.onsuccess = function(event) {
  note.innerHTML += '<li>Request successful .</li>';
}

Specifications

Specification Status Comment
Indexed Database API 2.0The definition of 'IDBObjectStore' in that specification. Recommendation
Indexed Database API DraftThe definition of 'IDBObjectStore' in that specification. Recommendation

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
IDBObjectStore

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

add

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

autoIncrement

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

clear

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

count

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

createIndex

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

delete

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

deleteIndex

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

get

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

getAll Chrome

Full support 48

Edge

Full support ≤79

Firefox

Full support 44

IE

No support No

Opera

Full support 35

Safari

Full support 10.1

WebView Android

Full support 48

Chrome Android

Full support 48

Firefox Android

Full support 48

Opera Android

Full support 35

Safari iOS

Full support 10.3

Samsung Internet Android

Full support 5.0

getAllKeys Chrome

Full support 48

Edge

Full support ≤79

Firefox

Full support 44

IE

No support No

Opera

Full support 35

Safari

Full support 10.1

WebView Android

Full support 48

Chrome Android

Full support 48

Firefox Android

Full support 48

Opera Android

Full support 35

Safari iOS

Full support 10.3

Samsung Internet Android

Full support 5.0

getKey Chrome

Full support 48

Edge

Full support ≤79

Firefox

Full support 51

IE

No support No

Opera

Full support 45

Safari

Full support 10.1

WebView Android

Full support 48

Chrome Android

Full support 48

Firefox Android

Full support 58

Opera Android

Full support 43

Safari iOS

Full support 10.3

Samsung Internet Android

Full support 5.0

index

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

indexNames

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

keyPath

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

name

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

openCursor

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

openKeyCursor

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 44

Disabled'

Full support 44

Disabled'

Disabled' From version 44: this feature is behind the dom.indexedDB.experimental preference. To change preferences in Firefox, visit about:config.

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

put

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

transaction

Chrome Full support 24


Full support 24


No support 23 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Edge

Full support 12

Firefox Full support 16


Full support 16


No support 10 — 16

Prefixed'

Prefixed' Implemented with the vendor prefix: moz

IE

Partial support 10

Opera

Full support 15

Safari

Full support 7

WebView Android Full support Yes


Full support Yes


No support ? — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Chrome Android Full support 25


Full support 25


No support 25 — 57

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Firefox Android

Full support 22

Opera Android

Full support 14

Safari iOS

Full support 8

Samsung Internet Android Full support 1.5


Full support 1.5


No support 1.5 — 7.0

Prefixed'

Prefixed' Implemented with the vendor prefix: webkit

Available in workers Chrome

Full support Yes

Edge

Full support ≤18

Firefox

Full support 37

IE

?

Opera

Full support Yes

Safari

?

WebView Android

Full support Yes

Chrome Android

Full support Yes

Firefox Android

Full support 37

Opera Android

Full support Yes

Safari iOS

?

Samsung Internet Android

Full support Yes

Legend

Full support  
Full support
Partial support  
Partial support
No support  
No support
Compatibility unknown  
Compatibility unknown
User must explicitly enable this feature.'
User must explicitly enable this feature.
Requires a vendor prefix or different name for use.'
Requires a vendor prefix or different name for use.


See also