Вероятно, ошибка Firestore при чтении данных - PullRequest
0 голосов
/ 14 февраля 2019

Трудно найти эту проблему, потому что это иногда случается, и очень повезло, что я уловил эту ошибку с открытым logcat.

Итак, проблема: когда я открываю свою активность и запрашиваю данные, я не вижу загруженные данные и получаю предупреждение logcat

[Firestore]: прослушивание запроса (упражнения, где myField == SomeValue порядок по name ) не выполнен: ay {code = PERMISSION_DENIED, description = Отсутствует или недостаточно разрешений., причина = null}

Первая идея может быть - неправильный индекс, неправильныйправила и т. д. Но это происходит, как я сказал «иногда», в большинстве случаев это работает.

Я заметил, что это происходит, когда приложение читает данные в первый раз или когда состояние подключения к Интернету снова меняется на онлайн.

Так похоже на ошибку, не так ли?Вероятно, вы столкнулись с этой проблемой.Вы можете мне помочь.

Вот простой блок кода с проблемой:

CollectionReference collection = db.collection("myCollection");
collection.whereEqualTo("myField","someValue")
.addSnapshotListener(this, new EventListener<QuerySnapshot>() {
         @Override
         public void onEvent(@Nullable QuerySnapshot snapshot,
               @Nullable FirebaseFirestoreException e) {
                 //magic 
        }
}

Правила:

 match /someitems/{someitem}{
            allow read: if request.auth.uid != null &&
          (resource.data.enable == true || isAdmin());
          allow write: if isAdmin()
        }

Индексы (обновлено, см. Комментарий ниже):

someitems:
  title: asc
  kit: asc
  language: asc
  enable:  asc

PS: я использую последние зависимости от firebase

Спасибо!

...