如何在一个 Firestore 集合中查询另一个 Firestore 集合文档中包含的值

时间:2021-03-12 04:37:52

标签: ios arrays swift firebase google-cloud-firestore

我有一个 TableView,它从以下集合 > 文档中提取数据: enter image description here

在我的主屏幕上,我想让用户选择显示他们添加到他们收藏夹中的膳食计划。我的 userFavourites 集合包含每个用户及其收藏夹的文档。 enter image description here

如何查询 Firestore 以仅返回包含在 userFavourites 集合中特定于当前用户的文档的 favourites 数组中的 mealPlans 集合中的文档?这是可以在 whereField() 方法中完成的吗?

我认为我的问题归结为以下概念:如何通过另一个数组过滤一个数组?即,只包含数组 1 中的值,同时也包含在数组 2 中。

1 个答案:

答案 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)
        }
    }
}
相关问题