查询和 Firebase 中的位置(swift 3)
Posted
技术标签:
【中文标题】查询和 Firebase 中的位置(swift 3)【英文标题】:query & where in Firebase (swift 3) 【发布时间】:2016-12-08 11:20:32 【问题描述】:如何在 firebase 中进行查询?在 oracle sql 上,查询将是
"select * from users where username = "SomeUser"
我需要在 Firebase、Swift 3 中做同样的事情
【问题讨论】:
显示您的 Firebase 数据库结构。 【参考方案1】:您需要使用queryOrderedByChild
和queryStartingAtValue
。这应该可以让您朝着正确的方向开始。
queryStartingAtValue(username).queryEndingAtValue(username)
let username = "SomeUser"
FIRDatabase.database().reference.child("users").queryOrderedByChild("username").queryStartingAtValue(username).queryEndingAtValue(username).observeEventType(.ChildAdded, withBlock: (snapshot) -> Void in
queryEqual(toValue: 用户名)
let searchRef = FIRDatabase.database().reference().child("users").queryOrdered(byChild: "username").queryEqual(toValue: username)
【讨论】:
为什么需要.queryStartingAtValue(username)
和.queryEndingAtValue(username)
?有没有更简单的方法来搜索某个值的所有结果?我看到有一些queryEqual(toValue: Any?)
函数。【参考方案2】:
Swift 3 && Firebase 3
我希望这能帮助你理解。来了
这是数据结构的示例:
这里是代码:
let username = "DavidMouse"
// create searchRef or queryRef you name it
let searchRef = FIRDatabase.database().reference().child("users").queryOrdered(byChild: "username").queryEqual(toValue: username)
// search the username
searchRef.observeSingleEvent(of: .value, with: (snapshot) in
guard snapshot.value is NSNull else
// yes we got the user
let user = snapshot.value as! String
print("\(user) is exists")
return
// no there is no user with desire username
print("\(username) is exists")
) (error) in
print("Failed to get snapshot", error.localizedDescription)
【讨论】:
在这种情况下,我们可以通过在 queryOrderedByChild 调用中指定嵌套子级的相对路径,按嵌套在users
键下的值对列表元素进行排序。以上是关于查询和 Firebase 中的位置(swift 3)的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 3 中包含字典的 Firebase 进程子快照