Java 如何在POJO类中从Firestore集合检索所有文档?

Java 如何在POJO类中从Firestore集合检索所有文档?,java,kotlin,google-cloud-firestore,Java,Kotlin,Google Cloud Firestore,我有一些关于Firebase Firestore的具体问题。我有一个Firestore示例模型,如下所示: query.addSnapshotListener { querySnapshot, firebaseFirestoreException -> if (firebaseFirestoreException != null) { if (!emitter.isDisposed) { TODO("implement new excepti

我有一些关于Firebase Firestore的具体问题。我有一个Firestore示例模型,如下所示:

query.addSnapshotListener { querySnapshot, firebaseFirestoreException ->
    if (firebaseFirestoreException != null) {
        if (!emitter.isDisposed) {
            TODO("implement new exception logic")
        }
    } else {
        val value = querySnapshot.toObjects(Category::class.java)
    }
}
query.addSnapshotListener { querySnapshot, firebaseFirestoreException ->
    if (firebaseFirestoreException != null) {
        if (!emitter.isDisposed) {
            TODO("implement new exception logic")
        }
    } else {
        val categories = HashMap<String, Category>()
        for (document in querySnapshot.getDocuments()) {
            categories.put(document.getId(), document.toObject(Category::class.java))
        }
        val categoriesEntity = CategoriesEntity()
        categoriesEntity.setCategories(categories)
    }
}

类别是一些文档中的集合。我尝试从集合中获取所有文档,如下所示:

query.addSnapshotListener { querySnapshot, firebaseFirestoreException ->
    if (firebaseFirestoreException != null) {
        if (!emitter.isDisposed) {
            TODO("implement new exception logic")
        }
    } else {
        val value = querySnapshot.toObjects(Category::class.java)
    }
}
query.addSnapshotListener { querySnapshot, firebaseFirestoreException ->
    if (firebaseFirestoreException != null) {
        if (!emitter.isDisposed) {
            TODO("implement new exception logic")
        }
    } else {
        val categories = HashMap<String, Category>()
        for (document in querySnapshot.getDocuments()) {
            categories.put(document.getId(), document.toObject(Category::class.java))
        }
        val categoriesEntity = CategoriesEntity()
        categoriesEntity.setCategories(categories)
    }
}
在这种情况下,我会得到
类别
文档的列表。
我可以像这样创建class
CategoriesEntity
并在
addSnapshotListener
中获取这个模型类吗

public class CategoriesEntity {

    private Map<String, Category> categories;

    public CategoriesEntity() {
    }

    public Map<String, Category> getCategories() {
        return categories;
    }

    public void setCategories(Map<String, Category> categories) {
        this.categories = categories;
    }
}
公共类分类实体{
私有地图类别;
公共分类实体(){
}
公共地图getCategories(){
退货类别;
}
公共空间集合类别(地图类别){
这个。类别=类别;
}
}

没有像
toObjects()
这样方便的方法可以创建映射,但是您可以手动迭代每个文档并将其添加到映射中

集合中的文档作为列表返回,因此您可以迭代每个文档,将其转换为
类别
实例,并手动将其添加到地图中,如下所示:

query.addSnapshotListener { querySnapshot, firebaseFirestoreException ->
    if (firebaseFirestoreException != null) {
        if (!emitter.isDisposed) {
            TODO("implement new exception logic")
        }
    } else {
        val value = querySnapshot.toObjects(Category::class.java)
    }
}
query.addSnapshotListener { querySnapshot, firebaseFirestoreException ->
    if (firebaseFirestoreException != null) {
        if (!emitter.isDisposed) {
            TODO("implement new exception logic")
        }
    } else {
        val categories = HashMap<String, Category>()
        for (document in querySnapshot.getDocuments()) {
            categories.put(document.getId(), document.toObject(Category::class.java))
        }
        val categoriesEntity = CategoriesEntity()
        categoriesEntity.setCategories(categories)
    }
}
query.addSnapshotListener{querySnapshot,firebaseFirestoreException->
如果(firebaseFirestoreException!=null){
如果(!emitter.isDisposed){
TODO(“实现新的异常逻辑”)
}
}否则{
val categories=HashMap()
for(querySnapshot.getDocuments()中的文档){
categories.put(document.getId(),document.toObject(Category::class.java))
}
val categoriesEntity=categoriesEntity()
categoriesEntity.setCategories(类别)
}
}

谢谢,也许这是迄今为止唯一的解决方案。我相信是这样的,因为
toObjects()
方法基本上是一种方便的方法,可以为您执行
for(document in snapshot.getDocuments())document.toObject()
的逻辑和迭代。