Проверьте, пустой ли запрос Firestore - PullRequest
3 голосов
/ 02 июля 2019

Я выполняю запрос для проверки логического значения (isLocked), чтобы узнать, заблокирован ли один или несколько документов:

final CollectionReference ref = FirebaseFirestore.getInstance().collection( "folders" ).document( user.getUid() ).collection( folder );

Query query = ref.whereEqualTo( "isLocked", true );
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        boolean b = task.getResult().isEmpty();
        ToastEX.showShort( MainActivity.this, b ? "isLocked=1" : "isLocked=0");
    }
});

Это всегда возвращает isLocked = 1 независимо от того, что находится в базе данных.

Как мне заставить это работать?Большое спасибо.

РЕДАКТИРОВАТЬ: Добавление скриншота: enter image description here

1 Ответ

1 голос
/ 02 июля 2019

При переопределении метода onComplete() всегда проверяйте, успешно ли выполняется задача, как в следующих строках кода:

if (task.isSuccessful()) {
    boolean b = task.getResult().isEmpty();
    ToastEX.showShort( MainActivity.this, b ? "isLocked=1" : "isLocked=0");
}  else {
    Log.d(TAG, "Error getting documents: ", task.getException());
}

Постарайтесь также не забыть реализовать elseчасть, чтобы увидеть, если у вас есть сообщение об ошибке.

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