How to check for an empty document on Firestore?

后端 未结 2 736
执念已碎
执念已碎 2020-12-21 01:19

So I am trying to delete a document on Firebase Firestore which contains no fields. But how can I check whether the document contains no data before I delete it

相关标签:
2条回答
  • 2020-12-21 01:50

    In order to check if the Document incoming is empty, you can check for the number of keys of the stored object. If there are 0 keys stored, you can then delete the document.

    Example code in 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();
    
    0 讨论(0)
  • 2020-12-21 01:56

    To solve this, you should get the data from the database as a Map:

    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!");
                    }
                }
            }
        }
    });
    

    To check a document only for existens it doesn't mean that is empty. The document can exist (like in your screenshot) but has no properties set. Because every document in a Cloud Firestore database is a Map, you can use size() method to see if is empty or not.

    0 讨论(0)
提交回复
热议问题