2017-04-05 166 views
0

我目前正在設置Firebase應用,並能夠檢索使用該應用的所有用戶的列表。當用戶首次註冊應用程序時,他們需要確認他們的電話號碼,因爲現在大多數iOS應用程序都會這樣做。我將他們的電話號碼存儲在「用戶」節點中。 我的問題是,如何在Firebase中查詢以檢查數據庫中是否存在該電話號碼?基本上我想查詢針對我產生對所有接觸查詢Firebase用戶是否檢查數據庫中是否存在聯繫人

如果一個特定的聯繫人正在使用的應用程序這將讓我的列表顯示的電話號碼列表,它會顯示在下方的接觸名稱在tableview/collectionview中。如果他們不是,那麼他們可以通過文本/電子郵件收到邀請加入應用程序。

「用戶」節點將顯示在我的火力地堡的數據庫,如下所示:

"users" : { 
    "userId1" : { 
     "name" : "Alex", 
     "email" : "[email protected]", 
     "phoneNumber" : "123456789" 
    }, 
    "userId2" : { 
     "name" : "Ben", 
     "email" : "[email protected]", 
     "phoneNumber" : "223456789" 

    }, 
    "userId3" : { 
     "name" : "Charles", 
     "email" : "[email protected]", 
     "phoneNumber" : "323456789" 

    } 
} 

我是新來的的NoSQL數據庫查詢,並希望幫助。非常感謝!

回答

1

首先,從firebase提取值並檢查它是否存在。下面是示例代碼

self.ref = FIRDatabase.database().reference() 
    ref.child("users").child("userID").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 

     if snapshot.hasChild("phoneNumber"){ 

      print("Phone number exist") 

     }else{ 

      print("Phone number doesn't exist") 
     } 


    }) 

另一種方式: 直接與路徑走向和檢查存在

FIRDatabase.database().reference().child("users").child("userID").child("phoneNumber").observeSingleEvent(of: .value, with: {(snap) in 

     if snap.exists(){ 

      //Your user already has a Phone number 

     }else{ 
      //Phone number not available 

     } 
    }) 
+1

但如何將檢查對所有用戶id與只是一個單一的用戶id? – a2b123

+0

用您擁有的用戶ID替換代碼中的「userID」。該路徑將導致該用戶ID –

0

使用火力地堡的排序功能嘗試。

var userRef : FIRDatabaseQuery = FIRDatabase.database().reference().child("users") 
userRef = userRef.queryOrdered(byChild: "phoneNumber").queryEqual(toValue: <NUMBER>) 
userRef.observe(FIRDataEventType.value, with: { (snapshot) in 
    if snapshot.value != nil { 
     //value exists 
    } 
}, withCancel: { (error) in 
    //search error 
}) 

更多信息排序是在這裏:https://firebase.google.com/docs/database/ios/lists-of-data

+0

謝謝,我認爲這是接近。但我會盡快發佈我的解決方案,因爲我認爲它可能有助於理解Firebase中的數據結構 – a2b123

相關問題