【问题标题】:query & where in Firebase (swift 3)查询和 Firebase 中的位置(swift 3)
【发布时间】:2016-12-08 11:20:32
【问题描述】:

如何在 firebase 中进行查询?在 oracle sql 上,查询将是

"select * from users where username = "SomeUser"

我需要在 Firebase、Swift 3 中做同样的事情

【问题讨论】:

  • 显示您的 Firebase 数据库结构。

标签: ios swift firebase firebase-realtime-database


【解决方案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 键下的值对列表元素进行排序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多