The upperBound()
method of the IDBKeyRange
interface creates a new upper-bound key range. By default, it includes the upper endpoint value and is closed.
Syntax
var myIDBKeyRange = IDBKeyRange.upperBound(upper[, open=false])
Parameters
- bound specifies the upper bound of the new key range.
- open indicates whether the upper bound excludes the endpoint value. The default is false. Optional
Return value
IDBKeyRange
: The newly created key range.
Exceptions
This method may raise a DOMException
of the following type:
Exception | Description |
---|---|
DataError |
The value parameter passed was not a valid key. |
Example
The following example illustrates how you'd use an upper bound key range. Here we declare keyRangeValue = IDBKeyRange.upperBound("F");
— a range that includes the value "F" and everything before it. We open a transaction (using IDBTransaction
) and an object store, and open a Cursor with IDBObjectStore.openCursor
, declaring keyRangeValue
as its optional key range value.
If we used IDBKeyRange.upperBound("F", true);
, then the range excludes "F"; and instead only includes the values before it.
Note: For a more complete example allowing you to experiment with key range, have a look at our IDBKeyRange-example repo (view the example live too.)
function displayData() { var keyRangeValue = IDBKeyRange.upperBound("F"); var transaction = db.transaction(['fThings'], 'readonly'); var objectStore = transaction.objectStore('fThings'); objectStore.openCursor(keyRangeValue).onsuccess = function(event) { var cursor = event.target.result; if(cursor) { var listItem = document.createElement('li'); listItem.innerHTML = '<strong>' + cursor.value.fThing + '</strong>, ' + cursor.value.fRating; list.appendChild(listItem); cursor.continue(); } else { console.log('Entries all displayed.'); } }; };
Specification
Specification | Status | Comment |
---|---|---|
Indexed Database API The definition of 'upperBound()' in that specification. |
Recommendation | |
Indexed Database API 2.0 The definition of 'upperBound()' in that specification. |
Editor's Draft |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 23webkit 24 (unprefixed) |
(Yes) | 10 moz 16.0 (16.0) |
10, partial | 15 | 7.1 |
Available in workers | (Yes) | (Yes) | 37.0 (37.0) | ? | (Yes) | ? |
Indexed Database 2.0 | 58 | ? | ? | ? | 45 | ? |
Feature | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | 22.0 (22.0) | 1.0.1 | 10 | 22 | 8 |
Available in workers | (Yes) | (Yes) | (Yes) | 37.0 (37.0) | (Yes) | ? | (Yes) | ? |
Indexed Database 2.0 | 58 | 58 | ? | ? | ? | ? | 45 | ? |
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.)