查询 Firebase 用户以检查数据库中是不是存在联系人
Posted
技术标签:
【中文标题】查询 Firebase 用户以检查数据库中是不是存在联系人【英文标题】:Querying Firebase Users to Check If Contact Exists in Database查询 Firebase 用户以检查数据库中是否存在联系人 【发布时间】:2017-08-31 09:28:51 【问题描述】:我目前正在设置 Firebase 应用,并且能够检索使用该应用的所有用户的列表。当用户首次注册应用程序时,他们需要确认他们的电话号码,就像现在大多数 ios 应用程序所做的那样。我将他们的电话号码存储在“用户”节点中。 我的问题是如何在 Firebase 中查询以检查该电话号码是否存在于我的数据库中?基本上我想查询我针对所有联系人列表生成的电话号码列表
这将允许我显示特定联系人当前是否正在使用该应用程序,它将显示在表格视图/集合视图中的联系人姓名下方。如果他们不是,那么他们可以通过短信/电子邮件收到加入该应用程序的邀请。
“用户”节点在我的 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 数据库中查询的新手,希望能得到帮助。太感谢了!
【问题讨论】:
【参考方案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
)
【讨论】:
但我将如何检查所有用户 ID 与仅一个用户 ID? 将代码中的“userID”替换为您拥有的用户ID。该路径将指向该用户 ID【参考方案2】:尝试使用 Firebase 的排序功能。
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
【讨论】:
谢谢,我认为这很接近。但我会尽快发布我的解决方案,因为我认为它可能有助于理解 Firebase 中的数据结构以上是关于查询 Firebase 用户以检查数据库中是不是存在联系人的主要内容,如果未能解决你的问题,请参考以下文章
如何使用geofire查询检查10公里半径内是不是存在firebase用户