簡體   English   中英

如何檢測firestore中文檔內的字段刪除?

[英]How to detect a field deletion inside a document in firestore?

以下是我們可以用來了解文檔是否被添加、修改或刪除的代碼:

db.collection("cities")
        .whereEqualTo("state", "CA")
        .addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot snapshots,
                                @Nullable FirebaseFirestoreException e) {
                if (e != null) {
                    Log.w(TAG, "listen:error", e);
                    return;
                }

                for (DocumentChange dc : snapshots.getDocumentChanges()) {
                    switch (dc.getType()) {
                        case ADDED:
                            Log.d(TAG, "New city: " + dc.getDocument().getData());
                            break;
                        case MODIFIED:
                            Log.d(TAG, "Modified city: " + dc.getDocument().getData());
                            break;
                        case REMOVED:
                            Log.d(TAG, "Removed city: " + dc.getDocument().getData());
                            break;
                    }
                }

            }
        });

有沒有辦法讓客戶知道另一個客戶是否刪除了文檔中的字段

Firestore SDK 不提供任何直接的方法來檢測這種情況。 您必須編寫代碼來比較之前的快照和新的快照,以查看是否添加、更改或刪除了任何字段。 您的解決方案必須:

  • 保留上次調用偵聽器的 QuerySnapshot 並將其與當前快照進行比較
  • 迭代包含在 QuerySnapshot 中的每個新 DocumentSnapshot,並從保留的 QuerySnapshot 中找到匹配的先前 DocumentSnapshot。
  • 從當前和先前 DocumentSnapshot 的數據中區分Map<String, Object>以查找特定更改

這顯然是一個不平凡的代碼量,並且將高度依賴於您要比較的實際字段數據。

暫無
暫無

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

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