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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询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的排序功能。

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用户以检查数据库中是否存在联系人的主要内容,如果未能解决你的问题,请参考以下文章

如何使用geofire查询检查10公里半径内是不是存在firebase用户

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

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

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

Firebase通过显示名称检查用户是不是存在[重复]

如何检查 Unity 的 Firebase 数据库中是不是已存在键/值