2016-12-08 129 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