【问题标题】:How to Query One Firestore Collection for Values Contained within another Firestore Collection Document如何在一个 Firestore 集合中查询另一个 Firestore 集合文档中包含的值
【发布时间】:2021-06-10 03:19:14
【问题描述】:

我有一个 TableView,它从以下 Collection > Documents 中提取数据:

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

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

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

【问题讨论】:

  • 您可以触发一个查询以从您的膳食计划集合中获取数据。一旦你从你的 userFavourite 集合中获得信息......从 mealPlan 中获取文档并绘制你的 UI

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


【解决方案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)
        }
    }
}

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2020-07-24
    • 2018-04-20
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多