как узнать, существуют ли данные в моментальном снимке запроса пожарного магазина? - PullRequest
0 голосов
/ 31 мая 2018

Это мой код, где я хочу получить данные и узнать, существуют ли данные или нет.Проблема в том, что если данные существуют, они запускаются { if(task.isSuccessful() }, но если данных не существует, они ничего не делают!

Как я могу знать, что данных не существует?Я добавил другие операторы { else }, но это не сработало.

CollectionReference reference = firestore.collection("Carts").document(FirebaseAuth.getInstance().getCurrentUser().getUid())
            .collection("Carts");
    reference.whereEqualTo("ordered",false).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    if(document.exists()){
                        Toast.makeText(ListProducts.this, "Exists", Toast.LENGTH_SHORT).show();
                    }
                    else {
                        // This part is not running even if there is no data
                        Toast.makeText(ListProducts.this, "NOPE", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        }
    });

Ответы [ 2 ]

0 голосов
/ 21 августа 2018

Проверка существования документа после успешного завершения задачи методами isEmpty () или size ()

if (task.isSuccessful()) {
    if(task.getResult().isEmpty()){
        //There is no such document do what ever you want!   
    }
    else {
        for (QueryDocumentSnapshot document : task.getResult()) {
            if (document.exists()) {
                Toast.makeText(ListProducts.this, document.toString(), Toast.LENGTH_SHORT).show();
            }
        }
    }
}

или

if(task.getResult().size > 0){
    //Document exist
}
0 голосов
/ 31 мая 2018

Вам необходимо использовать метод exists() непосредственно для объекта QueryDocumentSnapshot, например:

CollectionReference reference = firestore.collection("Carts").document(FirebaseAuth.getInstance().getCurrentUser().getUid())
            .collection("Carts");
    reference.whereEqualTo("ordered",false).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    if (document.exists()) {
                         Toast.makeText(ListProducts.this, document.toString(), Toast.LENGTH_SHORT).show();
                    }
                }
            } else{
                //This Toast will be displayed only when you'll have an error while getting documents.
                Toast.makeText(ListProducts.this, task.getException().toString(), Toast.LENGTH_SHORT).show();
            }
        }
    });

task.isSuccessful() используется для обработки успеха или неудачи в слушателе, пока существует () метод, когда вызывается для объекта QueryDocumentSnapshot класса, который расширяет DocumentSnapshot класс возвращает:

true, если документ существовал в этом снимке.

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