[英]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.