Firebase上的朋友列表

时间:2016-06-22 21:17:29

标签: ios swift firebase firebase-realtime-database

到目前为止,在我的火力基础上我有类似的东西:

Users
   293840ajldkjfas0d9
       username: Jill
   09283049802930laks
       username: Jack

我基本上只会有一个文本字段,当有人点击"添加"按钮,通过firebase搜索完成以确保用户名存在,并从那里开始连接两个朋友。

我的问题是,如果我的数据结构如此,我不理解如何对数据进行排序?我可能完全错过了一些东西,但是有没有办法搜索我现在拥有的内容并说“#34;转到我的用户参考,转到每个UID并提取用户名,看看它是否与用户输入的内容相匹配文本字段,如果是这样,请抓住连接到用户名的UID"?

我几乎以为我需要一个完全独立的分支?我除了已经拥有的东西之外还有

Usernames
   Jack
       09283049802930laks
   Jill
       lasdjf9j09u90320j09

然后允许我转到我的用户名并检查其中的值(jack / Jill),然后检查它是否存在然后将uid从用户名中拉出来。

1)我是否需要这两个分支,或者是否有办法完成我第一次尝试做的事情?

2)我究竟如何检查那场比赛?是否会使用查询或只是以某种方式检查Null?

3)这甚至是正确的方法吗?我发现在线朋友列表的信息几乎没有,所以这只是一个假设。

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

  

使用以下结构,您可以检查用户是否存在单个查询。这是您需要的所有代码:

这是数据库结构:

Users
293840ajldkjfas0d9
   username: Jill
09283049802930laks
   username: Jack

以下是代码:

    var usernameEntered = self.usernameField.text!

    var databaseReferenceQuery = self.ref.child("users").queryOrderedByChild("username").queryEqualToValue(usernameEntered).observeSingleEventOfType(.Value, withBlock: { (snapshot) in

        if ( snapshot.value is NSNull ) {



            // No user :(



        } else {

           // User exists! Do stuff!


        }


        }, withCancelBlock: { (error) in

           // An error occurred
    })

一旦你建立了一个用户,我就可以想到一些方法来获取uid。关键是要找到一个存储uid和用户名的地方。

选项1:

  

在存储uid的用户db结构中创建另一个分支。   在用户注册时设置此分支。

选项2:

  

将用户名作为displayName存储在标准身份验证系统中,并从那里获取uid。   在用户注册时进行设置。

这取决于你。

  

对评论的回应:   您只需在表格中检索用户的密钥,但允许访问任何身份验证功能,并且不允许以任何方式编辑用户帐户。
   这可能有用的情况包括更新用户信息,删除帐户等。