[英]Firebase Firestore Document Counts
db.collection("chatrooms")
.document(group_name)
.collection("chats")
.document()
.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if(task.isSuccessful()){
int size = task.getResult().getData().size();
}
}
});
这不适用于实现“com.google.firebase:firebase-firestore:21.0.0”。 任何解决方法都将受到高度赞赏。
在 Firebase 数据库上,有 getChildrenCount 方法,在 firestore 上,我找不到任何可以让我对文档进行计数的方法。
问题是你在集合上调用document()
:
db.collection("chatrooms")
.document(group_name)
.collection("chats")
.document()
正如CollectionReference.document()
的文档所说:
返回一个
DocumentReference
指向一个新文档,该文档具有此集合中自动生成的 ID。
因此,您正在加载单个文档,这就解释了为什么您无法获得集合中所有文档的计数。
您要做的是加载集合中的所有文档。 为此,您只需从查询中删除document()
调用,然后获取一个QuerySnapshot
对象作为结果。 查询快照有一个size
方法,可以显示文档的数量。
所以像:
db.collection("chatrooms")
.document(group_name)
.collection("chats")
.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()){
int size = task.getResult().size();
}
}
});
虽然此代码在技术上有效,但您会将集合中的所有文档加载到 Android 应用程序中。 当您刚开始时,这不是问题,但是随着您添加更多文档,它会加载越来越多的数据,如果您只需要计数,这将是非常浪费的。
出于这个原因,大多数应用程序也将此类计数器存储到数据库中。 有关如何执行此操作的示例,请参阅有关 分布式计数器的 Firestore 文档。
你不能在文档上这样做。 如果您查询一个集合,您将拥有一个文档快照列表 - 您可以在其中获取结果列表的大小。
你会想看看这个: https : //stackoverflow.com/a/49407570
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.