【发布时间】:2015-05-18 17:02:32
【问题描述】:
我对 Firebase 和 Swift 还是很陌生,在查询时遇到了一些麻烦。 所以基本上我想做两件事:
- 查询我的用户并只查找在其名称(或电子邮件地址)中包含特定字符串的用户,并将它们添加到数组中。
- 获取我的所有用户并将他们添加到数组中。
我的数据与此问题的相关部分如下所示:
如您所见,我使用的是 Firebase 的简单登录(稍后我也想添加 Facebook 登录),并且我通过用户的 uid 来存储我的用户。
我的规则文件的一部分如下所示:
"registered_users": {
".read": true,
".write": true,
".indexOn": ["name"]
}
所以每个人都应该对我的这部分数据有读写权限。
我还在他们的网站上阅读了 Firebase iOS 指南的“检索数据”部分,根据该指南,我获取所有用户姓名和电子邮件地址的代码应该可以工作,至少我认为是这样。但事实并非如此。这是我的代码:
func getUsersFromFirebase() {
let registeredUserRef = firebaseRef.childByAppendingPath("registered_users")
registeredUserRef.queryOrderedByChild("name").observeSingleEventOfType(.Value, withBlock: { snapshot in
if let email = snapshot.value["email"] as? String {
println("\(snapshot.key) has Email: \(email)")
}
if let name = snapshot.value["name"] as? String {
println("\(snapshot.key) has Name: \(name)")
}
})
}
我注意到,在 firebase 指南中,他们总是使用类型 ChildAdded 而不是 Value,但对我来说 Value 更有意义。 Value 的输出什么都没有, ChildAdded 的输出只有一个用户,即现在登录的用户。
所以我的问题是:
- 我可以使用我当前的数据结构进行此查询,还是必须摆脱通过用户的 uid 对用户进行报道?
- 如果是,我将如何更改我的代码才能使其正常工作?
- 如果不是,那么存储我的用户并使按名称查询他们成为可能的最佳方式是什么?
- 如何查询例如"muster" 并仅获取用户 simplelogin:1 (Max Mustermann)?
我希望我的描述足够详细。提前感谢您的帮助。
补充:
奇怪的是,“检索数据”指南说,可以按高度查询和排序以下数据。
数据:
查询代码:
那不正是我打算做的吗?
【问题讨论】:
-
我们怎样才能像您一样保存数据?
标签: ios swift firebase querying firebasesimplelogin