通过文档 ID 数组从 firebase 获取文档 (Kotlin)

Get documents from firebase by an array of documents IDs (Kotlin)

有什么方法可以通过 ID 列表从 firebase 获取文档吗? 我有这个清单: val IDs= listOf("id1","id2","id3","id4") 我想获取所有这些文档而不循环遍历它们。 像这样,如果可能的话: Firebase.firestore.collection("users").documents(IDs).get()

这在 Firestore 中是不可能的。 ID 只能通过 collection/document 请求直接访问。

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

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

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

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

或者,Brettski 建议的进行大量单个文档读取的方法也可以。