繁体   English   中英

如何检查在 Java 中的 Firestore 上删除了哪个文档 - Android Studio

[英]How to check which document is deleted on Firestore in Java - Android Studio

我在 Firestore 上有一个名为“Users”的集合,在这个集合中我有各种电话号码文档。 假设我在 android 上有一个可以用按钮删除数字的代码。 现在我怎样才能通过另一个代码不断地看到哪个文档(编号)正在被删除?

要检测何时在另一个客户端上删除了文档,您可以将实时侦听器附加到仅针对该文档的查询,然后检查快照之间的更改,直到文档被删除。

查询单个文档,您可以在FieldPath.documentId()上设置相等条件。

所以结合起来会是这样的

db.collection("users")
    .whereEqualTo(FieldPath.documentId(), "idOfDocumentToListenTo")
    .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 user: " + dc.getDocument().getData());
                        break;
                    case MODIFIED:
                        Log.d(TAG, "Modified user: " + dc.getDocument().getData());
                        break;
                    case REMOVED:
                        Log.d(TAG, "Removed user: " + dc.getDocument().getData());
                        // 👆 this is what you're looking for
                        break;
                }
            }

        }
    });

请注意,这种方法只能在删除主动发生时检测到删除。 如果删除发生在调用addSnapshotListener之前,客户端将无法再了解它,您可能需要查看Cloud Functions之类的内容或更改数据 model 以不实际删除文档,而是设置字段将其标记为已删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM