У меня есть запрос Firebase, который выглядит следующим образом:
this.db.object(`...irrelevent`).query
.orderByKey().startAt(startVal).endAt(`${endVal}\uf8ff`).once('value').then(res => {
if (res.val()) {
// value returned
}
});
Структура области, которую я запрашиваю, выглядит следующим образом
![Structure of Data](https://i.stack.imgur.com/Txmz7.png)
На основании найденной документации здесь при использовании функции упорядочения по клавишам сначала выполняется попытка отсортировать ключи по номерам, а затем лексикографически. Как вы можете видеть на картинке, мои ключи являются строками.
Когда startVal = "0015"
и endVal = "0060"
, запрос не совсем работает, так как он возвращает {0000-0015: "a", 0015-0075: "-M-BCseCnboNM9zB3o5S"}
. Насколько я понимаю, он не должен возвращать первое свойство объекта, но когда я делаю set startVal = "0795"
и endVal = "0810"
, он возвращает:
{0000-0015: "a"
0015-0075: "-M-BCseCnboNM9zB3o5S"
0150-0240: "-M-BCxH9URUtYQg06wXE"
0300-0360: "-M-BD-YIAXO2FMVac0PW"}
Это не кажется мне правильным, так как должно возвращаться ничего, потому что нет никаких данных между строками, которые startAt "0795" и endAt "0810".
Моя цель состоит в том, чтобы иметь возможность передать startVal, такой как "0000", и endVal, такой как "0030", и он возвращает
{0000-0015: "a"
0015-0075: "-M-BCseCnboNM9zB3o5S"}
Может кто-то прямо изложить мое понимание того, как работают запросы startAt и endAt при запросе диапазона строк?