The IDBRequest
interface of the IndexedDB API provides access to results of asynchronous requests to databases and database objects using event handler attributes. Each reading and writing operation on a database is done using a request.
The request object does not initially contain any information about the result of the operation, but once information becomes available, an event is fired on the request, and the information becomes available through the properties of the IDBRequest
instance.
All asynchronous operations immediately return an IDBRequest
instance. Each request has a readyState
that is set to the 'pending'
state; this changes to 'done'
when the request is completed or fails. When the state is set to done
, every request returns a result
and an error
, and an event is fired on the request. When the state is still pending
, any attempt to access the result
or error
raises an InvalidStateError
exception.
In plain words, all asynchronous methods return a request object. If the request has been completed successfully, the result is made available through the result
property and an event indicating success is fired at the request (IDBRequest.onsuccess
). If an error occurs while performing the operation, the exception is made available through the result
property and an error event is fired (IDBRequest.onerror
).
The interface IDBOpenDBRequest
is derived from IDBRequest
.
Also inherits properties from EventTarget
.
IDBRequest.error
Read only
DOMException
in the event of an unsuccessful request, indicating what went wrong.IDBRequest.result
Read only
Returns the result of the request. If the the request failed and the result is not available, an InvalidStateError exception is thrown.
IDBRequest.source
Read only
IDBIndex
or an IDBObjectStore
. If no source exists (such as when calling IDBFactory.open
), it returns null.IDBRequest.readyState
Read only
pending
state. The state changes to done
when the request completes successfully or when an error occurs.IDBRequest.transaction
Read only
IDBFactory.open
unless an upgrade is needed. (You're just connecting to a database, so there is no transaction to return).IDBRequest.onerror
IDBRequest.onsuccess
No methods, but inherits methods from EventTarget
.
In the following code snippet, we open a database asynchronously and make a request; onerror
and onsuccess
functions are included to handle the success and error cases. 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 two event handlers act on the database being // opened successfully, or not 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. db = DBOpenRequest.result; };
Specification | Status | Comment |
---|---|---|
Indexed Database API The definition of 'IDBRequest' in that specification. | Recommendation | Initial definition. |
Indexed Database API 2.0 The definition of 'IDBRequest' in that specification. | Recommendation |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 24
|
Yes | 16
|
10
|
15 | 7 |
Available in workers | Yes | ? | 37 | ? | Yes | ? |
error |
24
|
12 | 16
|
10
|
15 | 7 |
onerror |
24
|
12 | 16
|
10
|
15 | 7 |
onsuccess |
24
|
12 | 16
|
10
|
15 | 7 |
readyState |
24
|
12 | 16
|
10
|
15 | 7 |
result |
24
|
12 | 16
|
10
|
15 | 7 |
source |
24
|
12 | 16
|
10
|
15 | 7 |
transaction |
24
|
12 | 16
|
10
|
15 | 7 |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Yes
|
25
|
Yes | 22 | 22 | 8 | Yes
|
Available in workers | Yes | Yes | Yes | 37 | Yes | ? | Yes |
error |
Yes
|
25
|
Yes | 22 | 22 | 8 | Yes
|
onerror |
Yes | Yes | Yes | 22 | 22 | 8 | Yes |
onsuccess |
Yes | Yes | Yes | 22 | 22 | 8 | Yes |
readyState |
Yes | Yes | Yes | 22 | 22 | 8 | Yes |
result |
Yes | Yes | Yes | 22 | 22 | 8 | Yes |
source |
Yes | Yes | Yes | 22 | 22 | 8 | Yes |
transaction |
Yes | Yes | Yes | 22 | 22 | 8 | Yes |
IDBDatabase
IDBTransaction
IDBKeyRange
IDBObjectStore
IDBCursor
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest