У меня макете IndexedDB держит предметы, как:Почему я не могу получить правильный результат через функцию IDBKeyRange.bound в IndexedDB?
{
id:1002,
name:"Frank",
company: "dg",
age:30
}
И я создал индекс [ «имя», «возраст», «Компания»], просто хочу, чтобы получить результат Мне нужно, как websql.
getMultipleDataByRangeфункция определяется, чтобы получить детали, я поставил ['0',24,'ef']
в lowerBound
и ['z',24,'ef']
, как upperBound
, я думал, что он должен показать мне результат соответствует пунктов Кто в 24 лет плюс, чья компания «эф». Но результат показывает, что все элементы соответствуют диапазону, который я установил. Как настроить диапазон для получения правильного результата.
кода также можно проверить с помощью JSBIN ссылки я сгенерировал:
http://jsbin.com/sinuxa/edit?js,console
Спасибо, я вижу вопросы и ответы, которые вы упомянули ранее. Я просто задавался вопросом, есть ли способ получить окончательный результат без изменения порядка моего индекса, чтобы избежать создания более разных упорядоченных индексов для соответствия различным условиям. – Jin
Более того, я также проверяю «N-мерный путь» по этой ссылке (https://gist.github.com/inexorabletash/704e9688f99ac12dd336), но я думаю, что это не сработает, если строки будут перемешаны, потому что трудно задайте диапазон строк. Кроме того, я проверил некоторые уродливые способы сохранить результат для каждого условия в разных массивах, а затем получить пересечение. Это не изящно и неэффективно, когда db становится больше. – Jin
Этот gist (я автор) должен работать на ваш случай. Согласился, что установка диапазонов строк является тонкой. Для «любой строки» вы можете использовать '' to [] (сначала пустая строка, массив больше любой строки). Для строковых префиксов вы можете использовать, например, 'a' to 'a \ uFFFF' для любой строки, начинающейся с (если \ uFFFF действителен, тогда вам нужно использовать трюк-преемник из https://gist.github.com/inexorabletash/5462871) –