Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Firestore上检查空文档?_Java_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Java 如何在Firestore上检查空文档?

Java 如何在Firestore上检查空文档?,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,因此,我试图删除Firebase Firestore上的一个文档,该文档不包含任何字段。但是,在删除文档之前,如何检查文档是否不包含任何数据 要解决这个问题,您应该从数据库中以地图的形式获取数据: yourDocumentReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() { @Override public void onComplete(@NonNull

因此,我试图删除
Firebase Firestore
上的一个文档,该文档不包含任何字段。但是,在删除文档之前,如何检查文档是否不包含任何数据


要解决这个问题,您应该从数据库中以地图的形式获取数据:

yourDocumentReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                Map<String, Object> map = document.getData();
                if (map.size() == 0) {
                    Log.d(TAG, "Document is empty!");
                } else {
                    Log.d(TAG, "Document is not empty!");
                }
            }
        }
    }
});
yourDocumentReference.get().addOnCompleteListener(新的OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
DocumentSnapshot document=task.getResult();
if(document.exists()){
Map=document.getData();
if(map.size()==0){
Log.d(标记“文档为空!”);
}否则{
Log.d(标记“文档不是空的!”);
}
}
}
}
});

只检查文档是否存在并不意味着该文档为空。文档可以存在(如在屏幕截图中),但没有设置属性。因为Cloud Firestore数据库中的每个文档都是一个映射,所以可以使用
size()
方法查看文档是否为空。

为了检查文档
传入的
是否为空,可以检查存储对象的键数。如果存储了0个键,则可以删除文档

Typescript中的示例代码:

const doc = await firestore()
            .collection('Collection')
            .doc('incoming')
            .get();

const numberOfKeys = Object.keys(doc.data()).length;

if (numberOfKeys === 0) {
    await firestore()
    .collection('Collection')
    .doc('incoming')
    .delete();

我正在使用whereEqualsTo,但您可以使用任何查询:

 FirebaseFirestore db = FirebaseFirestore.getInstance();
    Query docRef = db.collection("rewards").whereEqualTo("adminId", Common.currentUser.getContact());
    docRef.addSnapshotListener((value, error) -> {
        if (value.getDocuments().size() == 0) {
            Snackbar snackbar = Snackbar.make(findViewById(R.id.content), "Empty", Snackbar.LENGTH_LONG);
            snackbar.show();
        }
它对我有用