The lowerOpen read-only property of the IDBKeyRange interface returns a boolean indicating whether the lower-bound value is included in the key range.
Syntax
var lowerOpen = myKeyRange.lowerOpen
Value
A boolean:
| Value | Indication |
|---|---|
true |
The lower-bound value is not included in the key range. |
false |
The lower-bound value is included in the key range. |
Example
The following example illustrates how you'd use a key range. Here we declare keyRangeValue = IDBKeyRange.upperBound("F", "W", true, true); — a range that includes everything between "F" and "W" but not including them — since both the upper and lower bounds have been declared as open (true). 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.
After declaring the key range, we log its lowerOpen property value to the console, which should appear as "true": the lower bound is open, so won't be included in the range.
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.bound("F", "W", true, true);
console.log(keyRangeValue.lowerOpen);
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 'lowerOpen' in that specification. |
Recommendation | |
| Indexed Database API 2.0 The definition of 'lowerOpen' 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.)