我目前正在设置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数据库中查询的新手,非常感谢帮助。非常感谢!
答案 0 :(得分:2)
首先,从firebase中获取值并检查它是否存在。以下是示例代码
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
}
})
另一种方式: 直接与路径和检查存在
getActivity()
答案 1 :(得分:0)
尝试使用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