查询和 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】:

您需要使用queryOrderedByChildqueryStartingAtValue。这应该可以让您朝着正确的方向开始。

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 进程子快照

如何使用 swift 有条件地向 Firebase Firestore 中的查询添加另一个过滤器?

Swift 3 中的 Firebase 存储图像持久性

firebase swift -- 用户查询

从firebase检索到swift 3中的多个按钮

Swift Firebase 快照查询缺少孩子