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

时间:2017-11-22 11:46:15

标签: java kotlin google-cloud-firestore

我有一些关于Firebase Firestore的具体问题。我有一个像这样的Firestore示例模型:

Firestore screenshot

类别是集合,在某些文档中。我尝试从这样的集合中获取所有文档:

query.addSnapshotListener { querySnapshot, firebaseFirestoreException ->
    if (firebaseFirestoreException != null) {
        if (!emitter.isDisposed) {
            TODO("implement new exception logic")
        }
    } else {
        val value = querySnapshot.toObjects(Category::class.java)
    }
}

在这种情况下,我获得Category文件列表。 我可以像这样创建类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;
    }
}

1 个答案:

答案 0 :(得分:1)

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

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

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)
    }
}