Firebase RTDB: limitToLast() зависает на неопределенный срок на AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Firebase RTDB: limitToLast() зависает на неопределенный срок на Android

Сообщение Anonymous »

Я недавно обновил Firebase и использую firebase_database: ^12.1.0 в своем приложении Flutter. После обновления моих запросов большинство из них работают правильно, за исключением тех, которые используют limitToLast().
Пример запроса следующий:

Код: Выделить всё

  Stream[*]> cargarDiferenciasStream(String idEmpresa) {
final Query resp = db
.child('PATH')
.orderByChild('fecha')
.limitToLast(40);
log('First Point executed');

return resp.onValue.map((event) {
log('Second Point executed');
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('Data was loaded - ${diferenciaList.length}');

return diferenciaList;
} else {
return const [];
}
});
}
Этот запрос отлично работает в симуляторе iOS и в Интернете.

[log] Первая точка выполнена
[log] Вторая точка выполнена
[log] Данные были загружены — 45

Однако при запуске приложения на Android оно просто остается в состоянии загрузки и никогда не получает никаких данных от узла. Записывается только Выполненная первая точка. Никаких ошибок или исключений не возникает.

[log] Первая точка выполнена

Если я удалю limitToLast() и оставлю только orderByChild('fecha') (который правильно индексируется в моих правилах Firebase), запрос работает как положено, что убедительно свидетельствует о том, что проблема не связана с анализом данных, JSON структуру или десериализацию модели.
Аналогично, если я заменю orderByChild('fecha') на orderByKey() и удалю limitToLast(), это также будет работать правильно.
Использование limitToLast() важно для меня, поскольку оно позволяет мне получать только самые последние записи вместо перебора всего набора данных, что значительно повышает производительность.
/>Мои вопросы:
  • Является ли limitToLast() устаревшим или проблематичным на Android, требующим другого подхода? Если да, то какую альтернативу рекомендуется использовать?
  • Есть ли другой способ получить самые последние записи без использования limitToLast() и без изменения структуры базы данных?


Подробнее здесь: https://stackoverflow.com/questions/798 ... on-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»