IDBKeyRange querying by key, where key is String

1.7k views Asked by At

The key of an object stored in IndexedDB is an Array of the format:

[int, String]

e.g. [1, "Foo"], [9, "Bar"]

How do I query the database using the string part of the key? For example I want to fetch all records with key [:any, "Some key"].

Looks like IDBKeyRange is used for integer ranges, but I couldn't find a method to build arbitrary queries on keys.

1

There are 1 answers

1
Raymond Camden On BEST ANSWER

When you create your index, ensure you set multiEntry to true, ie:

objectStore.createIndex("tags","tags", {unique:false,multiEntry:true});

You can then get a range using the only operator - assume 'tag' is what you are looking for:

var rangeTest = IDBKeyRange.only(tag);

And that should do it for you. I've got a full blog entry on this here: http://www.raymondcamden.com/index.cfm/2012/8/10/Searching-for-array-elements-in-IndexedDB