我正在尝试遍历我的用户集合中的所有用户(文档),然后访问每个用户中的一个集合,我将在其中检查某个字段是否设置为 true。
我可以按如下方式遍历我的用户:
let users = await firebase
.firestore()
.collection("users")
.get()
return users.docs.map(item => item.data())
但我无法进一步访问并访问每个用户文档中的集合。
我在网上看到的所有访问子集合的示例都明确涉及这样做,即
let snapshot = await firebase
.firestore()
.collection('users')
.doc('exampleUID')
.collection('subcollection')
.get()
但我没有看到有关获取集合中所有文档的集合的指导示例。
答案 0 :(得分:1)
没有单一的机制可以同时获取一个文档,以及所有“子”集合中的所有“子”文档,但是您可以获取所有文档在子集合中。
它被称为“collectionGroups”。您在名为 subcollection
的 CollectionGroup 上创建查询。效果很好。
firebase.firestore().collectionGroup(tableName).get()
但是,警告 - 它将所有名为 subcollection
的集合和子集合一起处理,而不管级别如何,因此您必须考虑如何命名子集合。
例如,如果您尝试了 .collectionGroup("thatGroup")
并且您的数据库中有以下结构:
/topCollection1/{documents}/subcollection1/{documents}/thatGroup/{documents}
/topCollection2/{documents}/thatGroup/{documents}
您最终会得到 topCollection1 和 topCollection2 的后代文档。
虽然结果显示在单个 QuerySnapshot
中,但您可以使用 .ref.path
(字符串)并解析它,或重复使用 .parent()
。