0

我有一个问题,因为我想从所有甲板上获得每种语言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
    }

有小费吗?

这是我的数据库的外观:

在此处输入图像描述

4

1 回答 1

0

这不是如何处理那种类型的字段:

document.data["languages"][1]

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

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

如果您尝试记录此值,您将得到以下结果:

en
于 2021-08-06T11:00:08.043 回答