原文:我遇到了一些我想不通的事情: 我有一个客户列表和他们的数据,我有一个日历日期列表,其中客户在 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/