通过文档 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 建议的进行大量单个文档读取的方法也可以。
有什么方法可以通过 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 建议的进行大量单个文档读取的方法也可以。