如何从 Firestore 中读取使用 Kotlin 中的 hashMap 添加的文档?
Posted
技术标签:
【中文标题】如何从 Firestore 中读取使用 Kotlin 中的 hashMap 添加的文档?【英文标题】:How to read documents from Firestore that was added using hashMap in Kotlin? 【发布时间】:2021-12-29 03:46:23 【问题描述】:我已经设法将hashMap
的数据添加到Firestore
中,如下所示,但是如果没有模型类,我很难从Firebase
读取所有文档。
val itemRequest = hashMapOf(
"item" to newItem,
"item_detail" to itemDetails,
"requested_by" to getCurrentUserID(),
"timestamp" to FieldValue.serverTimestamp(),
)
mFireStore.collection("item_request")
.document()
.set(itemRequest)
.addOnSuccessListener
fragment.successAddingItemRequest()
.addOnFailureListener
【问题讨论】:
然后创建一个模型类。这将易于维护且不易出错。 我一般都是用model class做的,为了减少model class的数量,我就想到了这样做。我不知道哪个在性能方面更好。 您用来向 Firestore 添加数据的代码对我来说真的很棒。您在代码中尝试过什么来读取数据?请编辑您的问题并将您的数据库结构添加为屏幕截图。 【参考方案1】:您可以使用DocumentSnapshot.data
属性将DocumentSnapshot
转换为Map<String, Any>
。
在你的情况下,你可以使用:
firestore.collection(collectionId).document(documentId).get()
.addOnSuccessListener documentSnapshot ->
val data = documentSnapshot.data
val item = data["item"]
val itemDetails = data["item_detail"]
...
在这里,您必须将返回的 Any
映射值转换为相应的数据类型。
但更好的方法是创建一个模型类来存储数据并使用DocumentSnapshot.getObject
取回数据。
【讨论】:
以上是关于如何从 Firestore 中读取使用 Kotlin 中的 hashMap 添加的文档?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 kotlin 中的 firestore 读取映射数据
如何从 firestore 读取其他用户(不是 user.uid)的数据
即使从缓存中获取数据,Firestore 数据库读取计数也会增加