在获取子集合中特定文档的快照之后,我希望将相关数据获取到它所属的根文档。
例如,有一个收藏餐厅,每个餐厅都有一个产品子集合。
在搜索某一餐厅的特定产品后,如何获得该产品所属的餐厅数据?我是否需要进行另一次搜索,或者如何从产品快照中获得它?
QuerySnapshot snapshot = await FirebaseFirestore.instance
.collectionGroup('products').get();
QueryDocumentSnapshot product = snapshot.docs.elementAt(0);
发布于 2021-11-29 00:26:25
实际上,有一种非常简单的方法可以做到这一点,并且它利用了文档的ref.path。您可以将ref.path字符串拆分为它的组件部分--记住,它是指向文档的完全"/“分隔的路径,例如:
restaurants/{restaurantId}/products/{productId}
topCollection/{topdocumentId}/nextCollection/{nextDocumentId}/.../bottomCollection/{bottomDocumentId}
显然,前两段是通向“父”文档的路径--不管树的深度如何(我碰巧有一个非常深的树结构)。然后,您可以获取“顶级父”:
db.collection(topCollection).doc(topdocumentId).get()
发布于 2021-11-29 02:04:34
要查找product
的父/餐馆文档,您需要沿着引用/父链遍历:
var restaurantRef = product.reference.parent.parent;
您仍然需要使用以下内容对该文档进行get
:
var restaurantDoc = await restaurantRef.get();
https://stackoverflow.com/questions/70147534
复制相似问题