【问题标题】:How to get specific array value Cloud Firestore如何获取特定的数组值 Cloud Firestore
【发布时间】:2021-11-20 02:16:11
【问题描述】:

我想获取 Firestore 数据库文档中第二个索引的值。目前,我可以获取整个数组,但无法通过索引获取值。

database image

这是我的代码,它返回数组的整个值。

        firebaseFirestore.collection("levels").document("data").get()
            .addOnCompleteListener(task -> {
                if (task.isSuccessful()) {
                    ArrayList arrayList = (ArrayList) task.getResult().get("images"); 
                    // Here i am getting the entire data from the document
                }
            });

【问题讨论】:

  • 收到arrayList[2] 有什么问题吗?我认为您不能通过 firestore 从数组中读取单个条目。
  • 是的,我可以得到这样的结果,但我想从 Firestore 获得一个,因为很快,该数组中就会有数百个元素。
  • 我认为,如果一次性获取它们将成为一个问题,您应该更改数据库的结构,以便它们位于单独的文档中,而不是单个文档中的数组。 Firestore 可以查询特定文档,但不能查询文档中的字段。

标签: java android firebase google-cloud-platform google-cloud-firestore


【解决方案1】:

目前,我可以获取整个数组。

这就是 Firestore 的工作方式。所有 Cloud Firestore 侦听器都会在文档级别触发。因此,您无法仅获取文档中的某些特定字段。在您的情况下,您不能仅获取该文档中存在的“图像”数组,或者仅获取该数组中的一个值。要么是整个文档,要么什么都没有。

但我无法通过其索引数据库图像获取值。

既然你已经得到了数组,你可以很简单地得到第二个索引处存在的值。知道第一个索引是0,第二个索引就是1。所以你必须提出以下要求:

ArrayList arrayList = (ArrayList) task.getResult().get("images");
String secondImage = arrayList.get(1);

【讨论】:

  • 是的,我可以得到这样的结果,但我想从 Firestore 获得一个,因为很快,该数组中就会有数百个元素。
  • 那又怎样?数组中有数百个元素没有问题。那是平常的事。但如前所述,如果不读取整个文档,就无法从数组中仅获取一个元素。 Firestore 就是这样工作的,对吧?
  • 嘿,女万!我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!
猜你喜欢
  • 2019-02-01
  • 2020-03-29
  • 1970-01-01
  • 2020-03-17
  • 2021-07-06
  • 1970-01-01
  • 2019-03-14
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多