Пример запроса следующий:
Код: Выделить всё
Stream[*]> cargarDiferenciasStream(String idEmpresa) {
final Query resp = db
.child('PATH')
.orderByChild('fecha')
.limitToLast(40);
return resp.onValue.map((event) {
if (event.snapshot.exists && event.snapshot.value != null) {
final List diferenciaList = [];
for (final child in event.snapshot.children) {
final temp = DiferenciaModel.fromJson(Map.from(child.value as Map));
temp.idDiferencia = child.key;
diferenciaList.add(temp);
}
log('Ok')
return diferenciaList;
} else {
return const [];
}
});
}
Если я удалю limitToLast() и оставлю только orderByChild('fecha') (который правильно индексируется в моих правилах Firebase), запрос работает должным образом, что убедительно свидетельствует о том, что проблема не связана с анализом данных, структурой JSON или моделью. десериализация.
Аналогично, если я заменю orderByChild('fecha') на orderByKey() и удалю limitToLast(), это также будет работать правильно.
Использование limitToLast() важно для меня, поскольку оно позволяет мне получать только самые последние записи вместо перебора всего набора данных, что значительно повышает производительность.
Мои вопросы являются:
- Является ли limitToLast() устаревшим или проблематичным на Android, требующим другого подхода? Если да, то какую альтернативу рекомендуется использовать?
- Есть ли другой способ получить самые последние записи без использования limitToLast() и без изменения структуры базы данных?
Подробнее здесь: https://stackoverflow.com/questions/798 ... on-android
Мобильная версия