swift - 如何从另一个 parent 那里过滤 Swift 中的 Firebase 数据?

标签 swift firebase firebase-realtime-database

原文:我遇到了一些我想不通的事情: 我有一个客户列表和他们的数据,我有一个日历日期列表,其中客户在 Firebase 中被标记为可用。我需要弄清楚如何根据日历排除客户。 我四处搜索,发现这个问题几乎回答了我的问题:

更新:我现在已经将我的 Firebase 数据库更改为不必分离父级,而是将其包含在客户中

How to filter Firebase data in Swift?

        // This is my new code from the link above
        ref.child("customers").queryOrdered(byChild: "calendar").
        queryEqual(toValue: true).observe(.childAdded, with: { snapshot in


        let snapshotDict = snapshot.value as? NSDictionary

            let name = snapshotDict?["Name"] as! String
            let email = snapshotDict?["Email"] as! String
            let rating = snapshotDict?["Rating"] as! String
            let key = snapshot.key

            self.posts.insert(postStruct(name: name, email: email, rating: rating, key: key), at: 0)
            self.tableView.reloadData()

因此,如果我应该只检查“calendar”的值是否为 true,这就可以了。但是我在日历中有几个键和值,我不知道下一步是什么。我的数据库如下所示:

    customers:
      - sk1239sdkq2312lk
            - calendar
                  - 9. june, 2018
                       - 1 : 10:00    
      - lk3j4590gsdflkj2
            - calendar
                  - 9. june, 2018
                       - 1 : 10:00    
      - x98123jasdhasdss
            - calendar
                  - 9. june, 2018
                       - 3 : 12:00    

我只想在我的表中插入 2018 年 6 月 9 日和 1 : 10:00 的前两个客户。

我有要查找的日期(2018 年 6 月 9 日)和时间(10:00),但没有数字(1、2、3)。

我该怎么做?

最佳答案

实时数据库和 Cloud Firestore 都不支持对多个集合(或子集合)的单一查询。

在检索到所有 客户后,您可以保留对日历集合的引用并在客户端对其进行查询。这有明显的缺点。

另一种选择是在 Customer 模型中包含一个字段(例如 usedCalendar)默认为 false,然后使用 Firebase Cloud Functions保持该字段值一致。您将 onCreate()onDelete() Hook 添加到 calendar 集合并更新相应客户的 usedCalendar 值(value)。

关于swift - 如何从另一个 parent 那里过滤 Swift 中的 Firebase 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50748299/

相关文章:

java - 自定义 Firebase 单例类以减少 Android 应用程序开发代码行

ios - Firebase - 无法将类型 'AppDelegate' 的值分配给类型 'UNUserNotificationCenterDelegate?'

java - 如何使用来自 firebase 实时数据库的电子邮件检索数据?

javascript - 使用 Firebase 处理未定义的值

ios - 导航栏在运行时改变颜色

ios - 点击 UIWebViews 时键盘消失

angular - 具有 Firebase 身份验证的拦截器

arrays - 从数组值中查找 Firebase Child - xcode 8/swift 3

ios - 你如何改变谷歌地图的集群图标?

Xcode 6 : Sprite node does not come in contact with other sprite node when tapped? 掉出屏幕?