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

我该如何工作?非常感谢。

编辑:添加屏幕截图:
java - 检查Firestore查询是否为空-LMLPHP

最佳答案

当您覆盖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());
}

尝试aslo不要忘记实现else部分,以查看是否有错误消息。

09-20 14:35