#javascript #indexeddb
#javascript #indexeddb
Вопрос:
function dataBaseFilter(filterIndex, range, callBack) {
let objectStore = db.transaction([objectStoreName], "readwrite").objectStore(objectStoreName);
let filter = objectStore.index(filterIndex);
let rangeFilter = IDBKeyRange.only(range); //弄清其内在机制,==?
let baseStruct;
let documentFragment = document.createDocumentFragment();
filter.openCursor(rangeFilter, "next").onsuccess = function(event) {
cursor = event.target.result;
if (cursor) {
let result = cursor.value;
console.log(result);
displaySomeThingAtOnce(result);
baseStruct = getCompleteTask(result);
documentFragment.appendChild(baseStruct);
callBack(documentFragment);
cursor.continue();
}
}
}
я хочу использовать IDBKeyRange.only () для определения того, равна ли дата, но это не сработает, я знаю почему.Но если мне нужно использовать IDBKeyRange.only () для определения того, равна ли дата, что мне делать?
Комментарии:
1. Спасибо за напоминание, но я думаю, что мне сложно удалить фрагменты кода, связанные с этой проблемой, из всего проекта.
2.
cursor.continue
это функция, но вы указали ее как свойство.3. Вы правы, большое вам спасибо. Но меня смущает, что мне делать, когда объекты, хранящиеся в IndexedDB, не могут быть отфильтрованы IDBKeyRange.only() ? Поскольку этот объект не является строкой, это объект Date, и IDBKeyRange.only () может использовать только ==
4. если вы сохраняете по датам, тогда запрашивайте по датам. используйте объект date.
5. Спасибо, хотя я не понимаю, что вы имеете в виду, теперь я отказался от использования IDBKeyRange.only () в качестве метода фильтрации. Я храню объект TASK, дата — это просто свойство TASK, и я не могу с помощью IDBKeyRange.only( ) Определить, равны ли объекты date. Еще раз спасибо.