到目前为止,在我的火力基础上我有类似的东西:
Users
293840ajldkjfas0d9
username: Jill
09283049802930laks
username: Jack
我基本上只会有一个文本字段,当有人点击"添加"按钮,通过firebase搜索完成以确保用户名存在,并从那里开始连接两个朋友。
我的问题是,如果我的数据结构如此,我不理解如何对数据进行排序?我可能完全错过了一些东西,但是有没有办法搜索我现在拥有的内容并说“#34;转到我的用户参考,转到每个UID并提取用户名,看看它是否与用户输入的内容相匹配文本字段,如果是这样,请抓住连接到用户名的UID"?
我几乎以为我需要一个完全独立的分支?我除了已经拥有的东西之外还有
Usernames
Jack
09283049802930laks
Jill
lasdjf9j09u90320j09
然后允许我转到我的用户名并检查其中的值(jack / Jill),然后检查它是否存在然后将uid从用户名中拉出来。
1)我是否需要这两个分支,或者是否有办法完成我第一次尝试做的事情?
2)我究竟如何检查那场比赛?是否会使用查询或只是以某种方式检查Null?
3)这甚至是正确的方法吗?我发现在线朋友列表的信息几乎没有,所以这只是一个假设。
感谢任何帮助!
答案 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。 在用户注册时进行设置。
这取决于你。
对评论的回应: 您只需在表格中检索用户的密钥,但不允许访问任何身份验证功能,并且不允许以任何方式编辑用户帐户。
这可能有用的情况包括更新用户信息,删除帐户等。