я хочу использовать IDBKeyRange.only () для определения того, равна ли дата

#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. Еще раз спасибо.