У меня есть определенный вопрос о 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) } }
В этом случае я получаю документы «Список 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; } }
Нет метода удобства, такого как 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) } }