如何在 Firebase 中使用通配符?
Posted
技术标签:
【中文标题】如何在 Firebase 中使用通配符?【英文标题】:How to use wildcard in Firebase? 【发布时间】:2017-08-11 02:16:25 【问题描述】:这是我的 Firebase 数据库结构:
ft-records
userX@gmail_com
2013-01-01 00:00:00 GMT
addedByUser: "userX@gmail.com"
notes: "Boooo"
time: "2013-01-01 00:00:00 GMT"
2013-01-02 10:00:00 GMT
addedByUser: "userX@gmail.com"
notes: "Yeaah"
time: "2013-01-02 10:00:00 GMT"
userY@gmail_com
2013-01-01 03:00:00 GMT
addedByUser: "userY@gmail.com"
notes: "Ok"
time: "2013-01-01 03:00:00 GMT"
我可以像这样为经过身份验证的用户查询这些数据,例如userX@gmail_com
let userRecords = self.ref.child(self.user.email.replacingOccurrences(of: ".", with: "_", options: .literal, range: nil))
userRecords.queryOrdered(byChild: "time").queryStarting(atValue: startOfDayDateString).queryEnding(atValue:endOfDayDateString).observe(FIRDataEventType.value, with: snapshot in ... )
但是如果我想查询所有用户在特定日期的所有笔记,我该如何实现呢?
我需要一个通配符来从根目录读取所有孩子,然后按每个孩子的时间查询。但我不知道该怎么做。
我可以这样做吗?
let ref = FIRDatabase.database().reference(withPath: "ft-records/*")
【问题讨论】:
【参考方案1】:您将为此使用 Firebase 数据库查询。
let ref = FIRDatabase.database().reference(withPath: "ft-records")
let query =ref.queryOrdered(byChild: "time").queryStarting(atValue: "2013-01-02 00:00:00 GMT").queryEnding(atValue: "2013-01-02 23:59:59 GMT")
有关详细信息,请参阅Firebase documentation on filtering data 和 Firebase codelab for ios。
【讨论】:
我不明白。ft-records
的孩子是 userX@gmail_com
和 userY@gmail_com
。没有可查询的time
。我错过了什么吗?
对了,里面多了一个关卡。您不能跨多个动态级别进行查询。
拒绝投票的原因:我认为答案应该更新为您作为评论提供的答案,如果仍然如此的话。 (另外,你自己承认,它误解了 OP 的问题。)以上是关于如何在 Firebase 中使用通配符?的主要内容,如果未能解决你的问题,请参考以下文章