查询Firebase用户以检查数据库中是否存在联系人

我目前正在设置Firebase应用,并且能够检索使用该应用的所有用户的列表。 当用户首次注册该应用时,他们需要确认他们的电话号码,因为这些天大多数iOS应用都会这样做。 我将他们的电话号码存储在“用户”节点中。 我的问题是如何在Firebase中查询以查看我的数据库中是否存在该电话号码? 基本上我想查询我正在针对所有联系人列表生成的电话号码列表

这将允许我显示特定联系人当前是否正在使用该应用程序,它将显示在tableview / collectionview中的联系人姓名下方。 如果他们不是,那么他们可以通过短信/电子邮件收到加入应用程序的邀请。

“用户”节点显示在我的Firebase数据库中,如下所示:

"users" : { "userId1" : { "name" : "Alex", "email" : "alex@gmail.com", "phoneNumber" : "123456789" }, "userId2" : { "name" : "Ben", "email" : "ben@gmail.com", "phoneNumber" : "223456789" }, "userId3" : { "name" : "Charles", "email" : "charles@gmail.com", "phoneNumber" : "323456789" } } 

我是一个在nosql数据库中查询的新手,非常感谢你的帮助。 非常感谢!

首先,从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 } }) 

尝试使用Firebase的排序function。

 var userRef : FIRDatabaseQuery = FIRDatabase.database().reference().child("users") userRef = userRef.queryOrdered(byChild: "phoneNumber").queryEqual(toValue: ) 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