Flutter:Firestore如何获取指定文档下归属的全部集合?
Firebase 获取文档下子集合列表的相关说明
为什么你拿到的是空映射
Firebase 客户端 SDK(Web/Android/iOS 端)原生没有提供枚举某文档下所有子集合的能力,这是官方出于安全规则执行效率、架构设计的限制,所以你直接尝试获取FPS文档下的集合列表才会返回空结果。
对应解决方案
- 如果你用的是客户端侧 SDK:
没有办法直接拉取子集合列表,也不需要逐个对集合执行.get()操作(你不知道子集合名的前提下根本无法调用对应集合的.get())。推荐的替代方案是:在FPS文档中新增一个自定义字段比如sub_collection_names,把当前文档下的所有子集合名字以数组形式存在这个字段里,每次新增/删除子集合时同步更新这个字段即可,后续只要读取FPS文档的这个字段就能拿到完整的子集合列表。 - 如果你用的是服务端 Admin SDK:
直接调用对应语言的listCollections()方法即可拿到FPS文档下的所有子集合引用,不需要提前知道子集合名,也不需要单独请求每个子集合。
注意:不要尝试用穷举的方式猜测子集合名来逐个调用
.get(),既违反设计逻辑,也会产生不必要的计费请求,同时安全规则也可能拦截这类请求。
内容的提问来源于stack exchange,提问作者chichi
相关产品推荐
相关产品推荐

