假设我有一个名为shoppingLists
的集合,并且该集合包含一个ingredients
列表,其中每个成分都是对ingredients
集合的引用。当检索shoppinglist
时,我还需要从每个ingredients
中提取一些数据。完成这样的事情最好的方法是什么?目前,我正在做如下的事情:
DocumentSnapshot userSnapshot = await Firestore.instance
.collection('users')
.document(userId)
.collection('shoppingLists')
.document(listName)
.get();
然后我迭代集合中的所有
ingredients
并执行以下操作:DocumentReference ingredientReference = data['ingredient'];
DocumentSnapshot ingredientSnapshot = await ingredientReference.get();
了解成分数据。这非常慢,因为我正在为列表中的每个成分运行一个get查询。在检索
shoppingLists
集合时,是否有某种方法可以急切地获取此数据,因此我只进行一次查询? 最佳答案
不能像在SQL中那样在FireStore中“加入”集合。如果要从多个集合或子集合中获取文档,则每个集合至少需要一个查询。如果不重组数据,就无法避免这种情况。
如果这对您来说太慢,请考虑以这样一种方式重新组织您的数据:您所需要的一切都在一个集合中。这并不少见,而且通常会导致重复数据,这是正常的。