IndexedDB getAll() упорядочение

Я использую getAll() способ получить все предметы из БД.

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

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

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

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

Я не смог найти информацию о заказе в официальных документах

1 ответ

Решение

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

  1. getAll относится к "шагам для получения нескольких ссылочных значений"
  2. шаги поиска относятся к "первому количеству записей в индексе"
  3. Спецификация индекса содержит следующий абзац:

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

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

Другие вопросы по тегам