2016-07-03 5 views
0

У меня есть родительский узел «сообщения», и мне нужно получить число детей под этим родителем.Firebase getChildrenCount() подсчитывает удаленные данные

  1. Я удаляю весь узел «сообщений».
  2. Повторно создать «сообщения» с 1 ребенком внутри него.
  3. с использованием .getChildrenCount() из снимка из databaseRef.children ("сообщения")
  4. .getChildrenCount() возвращают 12 (предположим, что 1 в данный момент времени)
  5. Повторите шаг 1 - 4. время .getChildrenCount() return 13.

Это испытание показывает, что удаленные дети по-прежнему влияют на счет. Возможно, в Firebase есть внутренний счетчик, который не сбрасывается, когда дети были удалены.

Перед тем, как попасть в эту проблему? Как разрешить?

+0

Проверите ли вы, что вы вызываете 13 раз при добавлении 'ChildEventListener'? Возможно, вам придется добавить этот прослушиватель, чтобы ваша локальная база данных извлекала изменения с сервера. – shem

+0

@shem Hi Shem, похоже, настоящая проблема на стороне клиента. У меня есть ответ на мой вопрос. Chill :) – Terrence

+1

Вы пытались включить/отключить опцию Disk Persistence? [Включить автономные возможности на Android] (https://firebase.google.com/docs/database/android/offline-capabilities) 'FirebaseDatabase.getInstance(). SetPersistenceEnabled (false);' или сохранить синхронизированные данные 'ref. keepSynced (истина); ' – Wilik

ответ

1

Я нашел решение. Возможно, существует несколько кеширование на стороне клиента, что вызывает эту проблему (в моем случае, Android в качестве клиента). Детский счет вернулся в нормальное состояние после того, как я удалил приложение с телефона и установил, затем снова запустил.

Надеюсь, кто-то из Firebase может объяснить это поведение и, возможно, рассказать нам, как с этим бороться. В любом случае, чтобы очистить кеш? Это может быть настоящей болью, если вы уже на производстве, и попросить пользователя переустановить приложение просто невозможно.

Смежные вопросы