查询 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用户

如何检查用户是不是已使用 Google Sign in 和 Firebase Auth 登录以检索他们的数据?

Firebase Facebook登录检查用户是不是存在

检查用户名是不是已经存在:Swift、Firebase

如何检查用户是不是存在于 Firebase 中?

检查用户是不是已经在浏览器中使用 Firebase 登录 [重复]