Я ищу некоторые объекты с их именами в базе данных FIRESTORE, и я прикрепил прослушиватель Onsuccess и onfailure к моему методу get, но если некоторые объекты не найдены, он не выполняет тело onfailure, я пытался отладить его, но не понял проблема. Я также просмотрел много статей, но, похоже, никто раньше не сталкивался с этим типом ошибок. Я прикрепил снимок экрана из моего журнала ниже - это мой код

  @Override
            public void onResponse(Call<List<DeviceEntity>> call, final Response<List<DeviceEntity>> response) {

                if (response.body() != null) {
                    Log.i("Test", "onResponse: got the device name searching it in firestore");

                    for (int i = 0; i < response.body().size(); i++) {
                        final int finalI = i;
                        Log.i("Test", "Devices that matched the saerch"+ response.body().get(finalI).getDeviceName());
                        FirebaseFirestore firebaseFirestore=FirebaseFirestore.getInstance();

                        firebaseFirestore.collection("Mobiles").document(response.body().get(finalI).getDeviceName())
                                .get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                            @Override
                            public void onSuccess(DocumentSnapshot documentSnapshot) {
                                MobileDataBaseObjectClass mb=documentSnapshot.toObject(MobileDataBaseObjectClass.class);
                                if (mb != null) {
                                    mb.setTimeStamp(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
                                    Log.i(TAGo, "Success:getting the info from firestore");
                                    new insertAsyncTask(mdao,"firestore").execute(mb);
                                }
                            }
                        }).addOnFailureListener(new OnFailureListener() {

                            @Override
                            public void onFailure(@NonNull Exception e) {
   Log.i(TAGo,"Onfailure listner"+e.toString());

                            }
                        });

введите описание изображения здесь

0
Asghar Nazir 8 Ноя 2018 в 21:27

1 ответ

Лучший ответ

Комментарий Франка ван Пуффелена - правильный ответ.

OnFailure выполняется только тогда, когда возникла проблема с чтением документа (например, у вас нет к нему доступа). Если документ не существует, он должен срабатывать onSuccess. - Франк ван Пуффелен

1
Asghar Nazir 3 Ноя 2019 в 17:13