【问题标题】:Kotlin Firebase get specific data from fieldKotlin Firebase 从字段中获取特定数据
【发布时间】:2021-08-06 07:35:41
【问题描述】:

我有一个问题,因为我想从所有 Decks 中获取每种语言1。我无法到达那里。我试过这样:

 document.data["languages"][1] <--- error

仅适用于:

document.data["languages"]

但是上面的这个返回我所有的语言,但我想从数组中只得到第二种语言,并且与这个列表不同。如何得到这个?现在我的代码如下所示:

val documents = db.collection("Decks")
        .get()
        .await()

    val languages = documents?.mapNotNull { document ->
        document.data["languages"] as String
    }

有什么建议吗?

这是我的数据库的外观:

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore


    【解决方案1】:

    这种类型的字段不是这样处理的:

    document.data["languages"][1]
    

    DocumentSnapshot#getData() 方法,返回Map&lt;String, Any&gt; 类型的对象。当您尝试读取与特定键对应的值时,您实际上不知道返回的是哪种对象。它可以是数组或任何其他属于supported data types 之一的对象。查看您的文档,“语言”字段确实是一个数组,因此您需要将对象转换为列表。为了获取第二个元素,请使用以下代码行:

    val en = (document.data["languages"] as List<String>)[1]
    

    如果你尝试记录这个值,你会得到这样的结果:

    en
    

    【讨论】:

    • 嘿,温纳斯!我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑采纳(✔️)。我真的很感激。谢谢!
    猜你喜欢
    • 2017-12-08
    • 1970-01-01
    • 2018-05-17
    • 2019-07-03
    • 2020-09-20
    • 2021-07-04
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多