【问题标题】:Get documents from firebase by an array of documents IDs (Kotlin)通过一组文档 ID (Kotlin) 从 firebase 获取文档
【发布时间】:2021-05-06 00:17:36
【问题描述】:

有没有办法通过 ID 列表从 firebase 获取文档? 我有这个清单: val IDs= listOf("id1","id2","id3","id4") 我想在不遍历它们的情况下获取所有这些文件。 像这样,如果可能的话: Firebase.firestore.collection("users").documents(IDs).get()

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore document


    【解决方案1】:

    这在 Firestore 中是不可能的。 ID 只能通过集合/文档请求直接访问。

    我不知道 Kotlin,但在 JavaScript 中,我可能会通过为每个文档创建一个函数数组,然后使用 Promise.all() 一次检索它们来接近它。它是 Firestore 的一个缺点,您无法查询多个 Id。

    【讨论】:

    • 我不理解反对票,因为答案的基础是您无法在 Firestore 中查询多个 id。 Plus 尝试提供以前使用的异步方法来获取多个 id。
    【解决方案2】:

    Firestore 客户端库没有批量读取的概念,它允许在给定 ID 的情况下检索一组文档。尽管如此,您仍然可以使用FieldPath.documentId()object 进行过滤文档ID 的查询。此值转换为允许查询文档 ID 的特殊标记,因此您可以编写如下查询:

    Firebase.firestore.collection("users")
                      .whereIn(FieldPath.documentId(), listOf("id1", "id2", [...], "id10"))
    

    使用这种方法需要注意一个限制。 whereIn 过滤器最多接受10 values。如果您需要检索更多内容,则需要进行多次查询。

    另外,Brettski 建议的读取一堆单个文档的方法也可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 2018-09-03
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      相关资源
      最近更新 更多