我有一个 TableView,它从以下集合 > 文档中提取数据:
在我的主屏幕上,我想让用户选择显示他们添加到他们收藏夹中的膳食计划。我的 userFavourites 集合包含每个用户及其收藏夹的文档。
如何查询 Firestore 以仅返回包含在 userFavourites 集合中特定于当前用户的文档的 favourites
数组中的 mealPlans 集合中的文档?这是可以在 whereField()
方法中完成的吗?
我认为我的问题归结为以下概念:如何通过另一个数组过滤一个数组?即,只包含数组 1 中的值,同时也包含在数组 2 中。
答案 0 :(得分:1)
您可以通过从 userFavourites
集合中获取收藏夹列表,然后迭代该数组并通过 id 获取每个单独的 mealPlan 来实现,这里有一个可以应用于您的案例的示例:
let currentUserId = Auth.auth().currentUser.uid
var mealPlans: [DocumentSnapshot] = []
db.collection("userFavourites").doc(currentUserId).getDocument { (document, error) in
let Favourites = document.get("favourites")
Favourites.forEach { mealPlanId in
db.collection("mealPlans").doc(mealPlanId).getDocument { (doc, error) in
mealPlans.append(doc)
}
}
}