如何从 firestore 检索数据并将其存储到数组(Kotlin-Android Studio)

问题描述 投票:0回答:2

我在 firebase 中有一个数据库,其中用户集合由多个字段组成,但只有每个用户的电子邮件是必不可少的。我想从 firebase 数据库中检索它并将其存储在 ArrayList 或 hashmap 中。你能帮我在 android studio 中使用 Kotlin 实现吗?

Firebase 集合示例:

Collection:Users

 ->document1->email1

 ->document2->email2
android firebase kotlin
2个回答
3
投票

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

0
投票

添加到 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 块中

© www.soinside.com 2019 - 2024. All rights reserved.