Может кто-нибудь скажет мне, можно ли выполнить поиск без учета регистра в хранилище объектов indexeddb с помощью индекса, openCursor и keyRange ....
Я могу сделать регистр с учетом регистра и реализовать что-то используя функцию toUpperCase, но есть очень много различных изменени, что не представляется возможным Релли ...
Любая помощь приветствуется ... Thanx ... Пример попытки:Нечувствительный к регистру поиск в indexedDB
var transaction = db.transaction("products", IDBTransaction.READ_ONLY);
var store = transaction.objectStore("products");
var descIndex = store.index('Index1');
var boundKeyRangeUpper = IDBKeyRange.bound(request.term.toUpperCase(), (request.term.toUpperCase()+'Z'));
descIndex.openCursor(boundKeyRangeUpper).onsuccess = function (e)
UPDATE
Это это то, что Я в конечном итоге реализации: Четыре диапазона, которые охватывают и возможность т.е. FA, Ф.А., Fa, фа ... Это сделано по первой букве только то есть «F»
var boundKeyRangeUpper = IDBKeyRange.bound(term.toUpperCase(), term.toUpperCase()+'Z'); var boundKeyRangeUpper2 = IDBKeyRange.bound(term.toUpperCase(), term.toUpperCase()+'z'); var boundKeyRangeLower = IDBKeyRange.bound(term.toLowerCase(), term.toLowerCase()+'z'); var boundKeyRangeLower2 = IDBKeyRange.bound(term.toLowerCase(), term.toLowerCase()+'Z');
Результаты поиска выше хранится в другом объектеStore, но с их описанием как верхний регистр, следовательно, FISH, FRUIT, FRESH SALAD ... Теперь, если буква нажата после F eg «r» поиск будет выглядеть в этом новом хранилище объектов, где все в верхнем регистре ... Это далеко не идеальное решение, но оно работает, и оно быстро подходит для моих потребностей ... Возможно, в конечном итоге мы получим случайный поиск по делу, возможно не ...
Благодарим вас за ответ. Это разумное решение, однако для набора данных из нескольких тысяч строк это будет дублировать каждую запись ... Я играл с рекурсией и использовал одну связанную с toUpperCase и одну с toLowerCase, но все равно ничего конкретного. – BriscoCountyJr
В вашем коде, когда вы указали keyRange, вы запрашивали одну строку или несколько строк? – Amro
Несколько строк. То, что я пытаюсь сделать, - это когда вы нажимаете письмо, например. «F», поле автозаполнения возвращает FRESH FURIT, фрагменты, салат fReSh ... Таким образом, нажав «F», поиск на idexeddb возвращает все продукты, не имеющие значения, с которых начинается имя продукта, то есть строчный «f» или «верхний регистр» F. ..Я знаю, что в SQL это было бы намного проще, но я подумал дать indexeddb, как кажется, путь локального хранилища идет вперед ... – BriscoCountyJr