Tl; DR: запросы к базе данных Firebase основаны на курсоре, а не на смещении.
Когда вы вызываете startAt()
, вы должны передать значение отметки времени, с которой вы хотите начать возвращать результаты. Вы не можете передать смещения, как вы пытаетесь сделать сейчас.
Текущий код:
FirebaseDatabase.getInstance()
.getReference("values")
.orderByChild("timestamp")
.startAt(5)
.endAt(10);
Сообщает базе данных:
- Найдите узел с именем
values
под root. - Упорядочите каждый дочерний узел по его значению
timestamp
. - Затем найдите дочерний узел со значением
5
и запустите возврат результатов оттуда. - Прекратить возвращать результаты, как только будет найден дочерний узел со значением
10
.
Как вы, вероятно, видите, это не даст вам никаких результатов, поскольку ни один из ваших дочерних узлов не имеет значения отметки времени от 5 до 10.
Как сказано: запросы Firebase основаны на курсоре, то есть они работают, зная что-то об узле, с которого нужно начать. В то время как многие базы данных разбивают на страницы смещения, Firebase этого не делает, и вам нужно знать значение метки времени узла, с которого нужно начать.
Например, если вы хотите начать с узла, который вы открыли в ваш снимок экрана, а затем вернуть следующие 5 результатов, вы должны:
FirebaseDatabase.getInstance()
.getReference("values")
.orderByChild("timestamp")
.startAt(-1590413110563)
.limitToFirst(5);