The IDBOpenDBRequest
interface of the IndexedDB API provides access to the results of requests to open or delete databases (performed using IDBFactory.open
and IDBFactory.deleteDatabase
), using specific event handler attributes.
Note: This feature is available in Web Workers.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="/docs/Web/API/EventTarget" target="_top"><rect x="1" y="1" width="110" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a><polyline points="111,25 121,20 121,30 111,25" stroke="#D4DDE4" fill="none"/><line x1="121" y1="25" x2="151" y2="25" stroke="#D4DDE4"/><a xlink:href="/docs/Web/API/IDBRequest" target="_top"><rect x="151" y="1" width="100" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="201" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">IDBRequest</text></a><polyline points="251,25 261,20 261,30 251,25" stroke="#D4DDE4" fill="none"/><line x1="261" y1="25" x2="291" y2="25" stroke="#D4DDE4"/><a xlink:href="/docs/Web/API/IDBOpenDBRequest" target="_top"><rect x="291" y="1" width="160" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="371" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">IDBOpenDBRequest</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Properties
Also inherits methods from its parents IDBRequest
and EventTarget
.
Methods
No methods, but inherits methods from its parents IDBRequest
and EventTarget
.
Events
Listen to these events using addEventListener()
or by assigning an event listener to the oneventname
property of this interface.
blocked
- Fired when an open connection to a database is blocking a
versionchange
transaction on the same database. Also available via theonblocked
property. upgradeneeded
- Fired when an attempt was made to open a database with a version number higher than its current version. Also available via the
onupgradeneeded
property.
Example
In the following example you can see the onupgradeneeded handler being used to update the database structure if a database with a higher version number is loaded. For a full working example, see our To-do Notifications app (view example live.)
var db; // Let us open our database var DBOpenRequest = window.indexedDB.open("toDoList", 4); // these event handlers act on the database being opened. DBOpenRequest.onerror = function(event) { note.innerHTML += '<li>Error loading database.</li>'; }; 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 displayData() function to populate the task // listwith all the to-do list data already in the IDB displayData(); }; // 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 // it is only implemented in recent browsers DBOpenRequest.onupgradeneeded = function(event) { var db = this.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 }); };
Specifications
Specification | Status | Comment |
---|---|---|
Indexed Database API 2.0 The definition of 'IDBOpenDBRequest' in that specification. |
Recommendation | Initial definition |
Indexed Database API Draft The definition of 'IDBOpenDBRequest' in that specification. |
Recommendation |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
IDBOpenDBRequest | Chrome
Full support
24
| Edge Full support 12 | Firefox
Full support
16
| IE Partial support 10 | Opera Full support 15 | Safari Full support 7 | WebView Android
Full support
Yes
| Chrome Android
Full support
25
| Firefox Android Full support 22 | Opera Android Full support 14 | Safari iOS Full support 8 | Samsung Internet Android
Full support
1.5
|
blocked event | Chrome
Full support
24
| Edge Full support 12 | Firefox
Full support
16
| IE Partial support 10 | Opera Full support 15 | Safari Full support 7 | WebView Android
Full support
Yes
| Chrome Android
Full support
25
| Firefox Android Full support 22 | Opera Android Full support 14 | Safari iOS Full support 8 | Samsung Internet Android
Full support
1.5
|
onblocked | Chrome
Full support
24
| Edge Full support 12 | Firefox
Full support
16
| IE Partial support 10 | Opera Full support 15 | Safari Full support 7 | WebView Android
Full support
Yes
| Chrome Android
Full support
25
| Firefox Android Full support 22 | Opera Android Full support 14 | Safari iOS Full support 8 | Samsung Internet Android
Full support
1.5
|
onupgradeneeded | Chrome
Full support
24
| Edge Full support 12 | Firefox
Full support
16
| IE Partial support 10 | Opera Full support 15 | Safari Full support 7 | WebView Android
Full support
Yes
| Chrome Android
Full support
25
| Firefox Android Full support 22 | Opera Android Full support 14 | Safari iOS Full support 8 | Samsung Internet Android
Full support
1.5
|
upgradeneeded event | Chrome
Full support
24
| Edge Full support 12 | Firefox
Full support
16
| IE Partial support 10 | Opera Full support 15 | Safari Full support 7 | WebView Android
Full support
Yes
| Chrome Android
Full support
25
| Firefox Android Full support 22 | Opera Android Full support 14 | Safari iOS Full support 8 | Samsung Internet Android
Full support
1.5
|
Available in workers | Chrome Full support Yes | Edge Full support ≤79 | 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
- Compatibility unknown
- Compatibility unknown
- Requires a vendor prefix or different name for use.
- Requires a vendor prefix or different name for use.
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.)