2016-12-08 130 views

回答

3

您需要使用queryOrderedByChildqueryStartingAtValue。这应该让你开始正确的方向。

let username = "SomeUser" 

FIRDatabase.database().reference.child("users").queryOrderedByChild("username").queryStartingAtValue(username).queryEndingAtValue(username).observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in 

} 
+1

为什么你需要'.queryStartingAtValue(username)'和'.queryEndingAtValue(username)'?是否有更简单的方法来搜索某个值的所有结果?我看到有一些'queryEqual(toValue:Any?)'函数。 – MarksCode

2

斯威夫特3 & &火力地堡3

我希望这将有助于你理解。在这里,我们去

这是示例中的数据结构: Example

这里是代码:

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) 
    } 
+0

在这种情况下,我们可以通过嵌套在'users'键下的值来排序列表元素,方法是在queryOrderedByChild调用中指定嵌套子元素的相对路径。 – bibscy