【问题标题】:how to get some child list from Firebase android kotlin?如何从 Firebase android kotlin 获取一些子列表?
【发布时间】:2021-02-02 22:33:52
【问题描述】:

如何在没有所有数据子子项的情况下仅读取图像中的颜色项?

我试试这个

val database = FirebaseDatabase.getInstance()
val personalDataReference = database.getReference("user personal data")
val messageList = ArrayList<String>()
personalDataReference.addValueEventListener(object : ValueEventListener{
    override fun onDataChange(dataSnapshot: DataSnapshot){
        messageList.add(dataSnapshot.value.toString())
    }
    override fun onCancelled(error: DatabaseError) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException())
    }
})

但它会获取所有数据

【问题讨论】:

    标签: android firebase kotlin firebase-realtime-database


    【解决方案1】:

    考虑使用 GitLive 的 Firebase Kotlin SDK

    这个库也是多平台的,所以同样的代码可以通过Kotlin Multiplatform Mobile在iOS上使用。

    从 Firebase 实时数据库读取密钥的代码如下所示:

    val keys = db.reference("/path/to/user personal data")
      .valueEvents
      .first()
      .children
      .mapNotNull { it.key }
    

    请注意,valueEventsDataSnapshot 的 Kotlin Flow,因此您可以做的不仅仅是拍摄第一个快照并将其映射到如上所示的列表。请参阅Flow 文档。

    【讨论】:

      【解决方案2】:

      您标记为黄色的东西在 Firebase 术语中称为 keys

      要获取只有键的列表,您可以这样做:

      personalDataReference.addValueEventListener(object : ValueEventListener{
          override fun onDataChange(dataSnapshot: DataSnapshot){
            for (childSnapshot in dataSnapshot.children) {
              messageList.add(childSnapshot.key)
            }
          }
      

      请注意,这仍会从数据库中读取所有 JSON,但列表将仅包含键。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-09
        • 2022-01-08
        • 2016-11-25
        • 1970-01-01
        • 2021-12-26
        • 2017-08-22
        • 1970-01-01
        • 2020-06-28
        相关资源
        最近更新 更多