The only() method of the IDBKeyRange interface creates a new key range containing a single value.

Note: This feature is available in Web Workers


var myIDBKeyRange = IDBKeyRange.only(value);


value is the value for the new key range.

Return value

IDBKeyRange: The newly created key range.


This method may raise a DOMException of the following types:

Exception Description
DataError The value parameter passed was not a valid key.


The following example illustrates how you'd use an only key range. Here we declare a keyRangeValue = IDBKeyRange.only("A"); — a range that only includes the value "A". 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. This means that the cursor will only retrieve the record with the key value "A".

Note: For a more complete example allowing you to experiment with key range, have a look at our IDBKeyRange repo (view the example live too.)

function displayData() {
  var keyRangeValue = IDBKeyRange.only("A");

  var transaction = db.transaction(['fThings'], 'readonly');
  var objectStore = transaction.objectStore('fThings');

  objectStore.openCursor(keyRangeValue).onsuccess = function(event) {
    var cursor =;
      if(cursor) {
        var listItem = document.createElement('li');
        listItem.innerHTML = '<strong>' + cursor.value.fThing + '</strong>, ' + cursor.value.fRating;

      } else {
        console.log('Entries all displayed.');


Indexed Database API 3.0 (Indexed DB 3.0)
# ref-for-dom-idbkeyrange-only①

Browser compatibility

BCD tables only load in the browser

See also