Firestore Query не пойдет на ответ - PullRequest
2 голосов
/ 05 апреля 2019

Я запрашиваю firestore с помощью запроса arrayContain, и мой код переходит в метод OnSuccess, но не попадает в цикл for.Он пропускает его и сразу переходит к добавлению списка в адаптер.

Я отладил его, и он просто не пошел в цикл for.

CollectionReference mRef = FirebaseFirestore.getInstance().collection("movies");
String s = "Captain Marvel";
mRef.whereArrayContains("title", s)
                    .get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    List<Movie> searchedMovies = new ArrayList<>();
                    for (QueryDocumentSnapshot document : queryDocumentSnapshots) {
                        Movie movie = document.toObject(Movie.class);
                        searchedMovies.add(movie);
                    }
                    mAdapter.addNewMovies(searchedMovies);
                }
});

enter image description here

1 Ответ

1 голос
/ 05 апреля 2019

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

Когда вы получаете результаты поиска в обратном вызове OnSuccessListener, вы должны проверить, содержит ли QuerySnapshot результаты, прежде чем предполагать, что есть результаты для повторения. Согласно документации API, существует метод isEmpty , который можно использовать, чтобы узнать, есть ли результаты.

Поскольку ваше поле заголовка является строкой, а не массивом, возможно, вам следует использовать запрос whereEqualTo вместо whereArrayContains для его поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...