检查Firestore查询是否为空

时间:2019-07-02 07:26:49

标签: java android firebase google-cloud-firestore

我正在运行查询以检查布尔值(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

2 个答案:

答案 0 :(得分:1)

当您覆盖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部分,看看是否有错误消息。

答案 1 :(得分:0)

我更喜欢addOnCompleteListener并在if语句上检查task.getResult.isEmpty()