Где пункт о составном индексе приводит к неиндексированной ошибке

У меня есть следующая схема таблицы:

db.version(1).stores({
    sales: "[item_id+date],sales"
});

Где комбинация date и item_id должна быть уникальной. Как я могу получить все записи для данного item_id, используя предложение where (не обращая внимания на дату)?

Следующее выдает ошибку:

db.sales.where('item_id').equals(some_item_id)

Необработанный отказ: SchemaError: KeyPath item_id в продажах хранилища объектов не индексируется


person Yoav Kadosh    schedule 29.09.2016    source источник


Ответы (1)


person    schedule
comment
Спасибо. По какой-то причине приведенное выше возвращает n-1 записей. Возможно, это потому, что between не включает? - person Yoav Kadosh; 30.09.2016
comment
Хорошо, between ([some_item_id, -Infinity], [some_item_id, Dexie.maxKey, true, true) делает это. - person Yoav Kadosh; 30.09.2016
comment
Это просто не работает, я выполнил следующий запрос, await window.db.Thread.where('[last_message_received_timestamp+needSync]').between([Dexie.minKey, 1], [Dexie.maxKey, 1]).toArray() и он возвращает мне весь набор результатов. Я проверил, что в IDB нет значения с needSync = 1. Я использую последнюю версию Chrome. - person Shubham Khatri; 03.03.2020
comment
@ShubhamKhatri Dexie.minKey и Dexie.MaxKey должны быть второй позицией массива. Ты поставил его первым. - person David Fahlander; 04.03.2020