Запрос IDBKeyRange по ключу, где ключ это строка
Ключ объекта, хранящегося в IndexedDB, является Array
формата:
[int, String]
например [1, "Foo"]
, [9, "Bar"]
Как запросить базу данных, используя строковую часть ключа? Например, я хочу получить все записи с ключом [:any, "Some key"]
,
Похоже IDBKeyRange
используется для целочисленных диапазонов, но я не смог найти метод для построения произвольных запросов по ключам.
1 ответ
Решение
Когда вы создаете свой индекс, убедитесь, что вы установили для multiEntry значение true, то есть:
objectStore.createIndex("tags","tags", {unique:false,multiEntry:true});
Затем вы можете получить диапазон, используя единственный оператор - предположим, что вы ищете 'tag':
var rangeTest = IDBKeyRange.only(tag);
И это должно сделать это для вас. У меня есть полная запись в блоге об этом здесь: http://www.raymondcamden.com/index.cfm/2012/8/10/Searching-for-array-elements-in-IndexedDB