IndexedDB getAll() упорядочение
Я использую getAll()
способ получить все предметы из БД.
db.transaction('history', 'readonly').objectStore('history').getAll().onsuccess = ...
мой ObjectStore
определяется как:
db.createObjectStore('history', { keyPath: 'id', autoIncrement: true });
Могу ли я рассчитывать на заказ предметов, которые я получу? Будут ли они всегда отсортированы по первичному ключу id
?
(или есть способ явно указать сортировку?)
Я не смог найти информацию о заказе в официальных документах
1 ответ
Если документы не помогают, обратитесь к спецификации:
- getAll относится к "шагам для получения нескольких ссылочных значений"
- шаги поиска относятся к "первому количеству записей в индексе"
- Спецификация индекса содержит следующий абзац:
Записи в индексе всегда сортируются в соответствии с ключом записи. Однако, в отличие от хранилищ объектов, данный индекс может содержать несколько записей с одним и тем же ключом. Такие записи дополнительно сортируются в соответствии со значением записи индекса (то есть ключом записи в хранилище ссылочных объектов).
Чтение в обратном направлении: индекс отсортирован. getAll
извлекает первое N индекса, то есть сохраняет порядок. Поэтому сам результат должен сохранять порядок сортировки.