Java 如何在POJO类中从Firestore集合检索所有文档?
我有一些关于Firebase Firestore的具体问题。我有一个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
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)
}
}
在这种情况下,我会得到类别文档的列表。
我可以像这样创建classCategoriesEntity
并在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()
的逻辑和迭代。