【问题标题】:FireStore and maps/arrays, document-list to array in KotlinFireStore 和地图/数组,Kotlin 中的文档列表到数组
【发布时间】:2019-11-06 01:43:09
【问题描述】:

我终于开始了解很多有关 FireStore 的信息,但我想知道是否可以得到一些帮助。

如果我有类似或类似的设置:

          比赛

                Android

                     名称:Android

                     尺寸:中等

                       统计数据          

                              str: 10

                               性别:12....(更多值)

我将如何解析这个?我希望让特定的 TextView 应用在数据库中找到的值,这样我就可以简单地更新数据库,我的应用程序将填充这些值,这样将来硬编码和代码更新就不会那么麻烦了。

我目前使用这样的东西:

val androidRef = db.collection("races").document("Android") 
androidRef.get().addOnSuccessListener { document ->
if (document != null) {
     oneOfTheTextViews.text = document.getString("str") 
} else { 
}

问题是目前我似乎只能从集合(比赛)/文档(android)/然后是单个字段(我将“str”设置为单个字段,而不是地图或数组的一部分)

这样做的最佳做法是什么?我根本不应该嵌套它们吗?如果我可以引用所说的嵌套/映射/数组,需要调用哪些函数? (需要明确的是,我不仅要问是否有可能——参考指南和文档都提到了这一点——而是需要调用哪些属性/类/方法/等才能仅访问其中一个值或点到这些值之一?)。

第二个问题:有没有办法获取文档名称列表?如果我有几场比赛,并且只是想根据文档名称创建一个微调器或回收器视图作为集合的一部分,我可以将其读取到应用程序中吗?

【问题讨论】:

  • 最好新建节点。将stats 与节点races 分开
  • 所以races是集合,Android是文档。您是在建议将统计信息作为自己的集合或文档?如果那样的话,每个文档可能只有 10~20 个字段(实际上是在更大的一端)。
  • 我建议从比赛节点中获取统计数据。
  • 我的第二个问题有答案了吗?将集合中的文档制作成数组以供微调器使用?

标签: arrays firebase dictionary kotlin google-cloud-firestore


【解决方案1】:

这样做的最佳做法是什么?

如果您想获取嵌套在 stats 映射中的 str 属性的值,请更改以下代码行:

oneOfTheTextViews.text = document.getString("str")

oneOfTheTextViews.text = document.getString("stats.str")

如果您的str 属性是一个数字并且不是一个字符串,那么请使用以下代码行代替上面的代码:

oneOfTheTextViews.text = document.getLong("stats.str")

我应该根本不嵌套它们吗?

不,您可以在 Map 中嵌套任意数量的属性。

有没有办法获取文档名称列表?

是的,只需迭代集合并使用 getId() 函数获取文档 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2020-09-07
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多