Я опоздал на пару лет, но я просто хотел бы отметить, что ответ Джоша основан на предположении, что все "столбцы" в условии являются частью индекса keyPath
.
Если какой-либо из указанных «столбцов» существует за пределами индекса keyPath
, вам придется проверять условия, связанные с ними, для каждой записи, по которой перебирает курсор, созданный в примере.Так что, если вы имеете дело с такими запросами, или ваш индекс не unique
, будьте готовы написать некоторый итерационный код!
В любом случае, я предлагаю вам проверить BakedGoods если вы можете представить свой запрос в виде логического выражения.
Для этих типов операций он всегда будет открывать курсор на целевом хранилище объектов, если вы не выполняете запрос строгого равенства (x ===? y
, если x является objectStore или ключом индекса), но он сохранитВам трудно написать собственный код итерации курсора:
bakedGoods.getAll({
filter: "keyObj > 5 && valueObj.someProperty !== 'someValue'",
storageTypes: ["indexedDB"],
complete: function(byStorageTypeResultDataObj, byStorageTypeErrorObj){}
});
Ради полной прозрачности BakedGoods поддерживается moi .