簡體   English   中英

如何在 Firestore 上檢查空文檔?

[英]How to check for an empty document on Firestore?

所以我試圖在Firebase Firestore上刪除一個不包含任何字段的文檔。 但是如何在刪除之前檢查文檔是否不包含任何數據?

在此處輸入圖片說明

要解決這個問題,您應該從數據庫中獲取數據作為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!");
                }
            }
        }
    }
});

僅檢查存在的文檔並不意味着它是空的。 該文檔可以存在(就像在您的屏幕截圖中一樣)但沒有設置屬性。 由於 Cloud Firestore 數據庫中的每個文檔都是一個 Map,因此您可以使用size()方法查看是否為空。

為了檢查incoming的文檔是否為空,您可以檢查存儲對象的鍵數。 如果存儲了 0 個密鑰,則可以刪除該文檔。

打字稿中的示例代碼:

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();
        }

這個對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM