2

Я использую метод getAll(), чтобы получить все предметы из db.IndexedDB getAll() заказ

db.transaction('history', 'readonly').objectStore('history').getAll().onsuccess = ... 

Мой ObjectStore определяется как:

db.createObjectStore('history', { keyPath: 'id', autoIncrement: true }); 

Могу ли я рассчитывать на упорядочение элементов, которые я получаю? Будут ли они сортироваться по первичному ключу id?
(или есть способ задать сортировку явно?)

Я не мог найти любую информацию о заказе в официальном docs

ответ

4

Если документы не помогают, обратитесь к спецификации:

  1. getAll относится к «шаги для получения нескольких значений, на которые ссылается»
  2. the retrieval steps найти в разделе «первые подсчета записей в индекса "
  3. the specification of index содержит следующий пункт:

    Записи в индексе всегда отсортирован в соответствии с ключа пластинки. Однако, в отличие от хранилищ объектов, данный индекс может содержать несколько записей с тем же ключом. Такие записи дополнительно сортируются согласно значению записи индекса (что означает ключ записи в хранилище ссылок).

Чтение назад: индекс сортируется. getAll извлекает первый N индекса, то есть сохраняет порядок. Поэтому сам результат должен сохранить порядок сортировки.