我在 firebase 中有一个数据库,其中用户集合由多个字段组成,但只有每个用户的电子邮件是必不可少的。我想从 firebase 数据库中检索它并将其存储在 ArrayList 或 hashmap 中。你能帮我在 android studio 中使用 Kotlin 实现吗?
Firebase 集合示例:
Collection:Users
->document1->email1
->document2->email2
来自 firestore 文档 - https://firebase.google.com/docs/firestore/query-data/get-data#kotlin+ktx_3
您需要创建firestore数据库的引用。然后从集合中获取数据,这将返回集合的所有文档。在迭代中将文档转换为您需要创建的用户类,该用户类将具有电子邮件字段。
db.collection("users")
.get()
.addOnSuccessListener { result ->
for (document in result) {
val users = document.toObject(Users::class.java)
Log.d(TAG, "${document.id} => ${document.data}")
}
}
.addOnFailureListener { exception ->
Log.w(TAG, "Error getting documents: ", exception)
}
添加到 amanpreet-kaur 答案中,提高效率的一种方法是使用 Firestore 的
toObjects()
方法,该方法直接将 QuerySnapshot
转换为对象列表。
db.collection("users")
.get()
.addOnSuccessListener { result ->
val userList = result.toObjects(User::class.java)
.addOnFailureListener { exception ->
Log.e("Firestore", "Error getting documents: ", exception)
}
考虑到错误的可能性,您可以将
val userList = result.toObjects(User::class.java)
在 try-catch 块中