我只是试图从firebase为我的项目检索数据 . 例如,在UILabel中显示facebook用户名 . 我存储了像这样的facebook用户数据
然后使用以下方法检索数据
let ref = Firebase(url:"https://<app-name>.firebaseio.com/users/facebook:10207213459687665/name")
ref.observeEventType(.Value, withBlock: { snapshot in
self.facebookUserName.text = snapshot.value as! String
})
它工作得很好,但通过检索特定路径中的用户名非常愚蠢,因为这可能是不同的Facebook用户登录 .
我想检查用户是否登录并显示他们的名字或检查currentUser或更聪明的方法来执行此操作?我不知道该怎么做 .
3 回答
有100种不同的方法可以做到这一点;这是一对夫妇
在上面,您将查询您想要的facebook_id,它将返回节点和所有子节点(名称,地址等) . user_id_x是Firebase自动生成的节点名称(保证不同)
另一种选择是使用相同的数据结构并观察该节点以加载数据 . 请记住,facebook id是节点的KEY,而不是值 - .value是键:值对 .
如果您只关心用户名,可以使用facebook id作为键来简化您的结构,值将是用户名:
并使用上面的观察代码进行检索,除非您在初始问题中再次使用.value属性 .
在这种情况下,.value属性是一个字符串,因为它是唯一的值(在您发布的结构中没有子节点,这可能会导致问题,因为它可能是一系列键:值对会崩溃)
查询会增加一些开销,因此观察效率更高 .
我在http://www.appcoda.com/firebase/找到了答案
当我们尝试从当前用户获取数据时,请在下面添加以下代码以存储uid(创建用户帐户时)
分配变量:
实现函数代码:
然后我们可以在直接路径中废弃参考 .
我有同样的问题 . 为了解决这个问题,我创建了一个自动引用登录用户的变量:
然后,在您尝试获取要显示的用户数据的@IBOutlet下,写入:
当您运行代码时,“UsersRef.authData.uid”会自动替换为当前登录用户的特定ID . 这应该创建一个指向登录用户的数据库信息的直接路径,而无需手动输入用户的ID在参考文献中 .