Table.orderBy Dexie для заказов Uint32Array, как если бы это был Uint8Array

Мой сохраненный объект имеет отметку времени в секундах с эпохи Unix. Я хочу иметь возможность хранить его как Uint32Array, а затем извлекать его по метке времени.

Я использую Table.orderBy Dexie, чтобы получить его. Порядок неправильный, и после некоторого исследования я заметил, что порядок такой, как если бы вы конвертировали Uint32Array в Uint8Array.

Посмотрите этот пример скрипки, чтобы узнать, как он не может заказать Uint32 и вместо этого заказывает Uint8:

https://fiddle.jshell.net/3tf5r0cu/708/

Я делаю неправильные предположения или это недостаток Dexie или это недостаток IndexedDb?

Я использую Dexie 2.0.1 в Chromium.


person ltgorm    schedule 15.03.2018    source источник


Ответы (1)


На самом деле это соответствует спецификации indexedDB 2.0. Все бинарные ключи (любой ArrayBufferView) сортируются одинаково (как байтовый массив). Вместо этого вам, вероятно, следует использовать числа или даты.

person David Fahlander    schedule 15.03.2018
comment
Спасибо. Я прочитал его без регистрации, но я полагаю, что вы имеете в виду этот пункт в спецификации: Члены двоичных ключей сравниваются как беззнаковые значения октетов (в диапазоне [0, 255]), а не значения байтов со знаком (в диапазоне [-128, 127]). - person ltgorm; 16.03.2018