假设我有一个名为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中“加入”集合。如果要从多个集合或子集合中获取文档,则每个集合至少需要一个查询。如果不重组数据,就无法避免这种情况。
如果这对您来说太慢,请考虑以这样一种方式重新组织您的数据:您所需要的一切都在一个集合中。这并不少见,而且通常会导致重复数据,这是正常的。

07-28 04:15
查看更多