首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用swift检查Firebase中的用户类型

使用swift检查Firebase中的用户类型
EN

Stack Overflow用户
提问于 2016-04-28 21:39:46
回答 2查看 189关注 0票数 0

初学者都快和火基地在这里!我有一个像这样的数据库:

数据库

 播放器

  参.authdata.uid-for player-1

  参.authdata.uid-for player-2

  参.authdata.uid-for player-3

 教练员

  参参.authdata.uid-供教练-1

  参参.authdata.uid-供教练-2

  参参.authdata.uid-供教练-3

我的应用程序的一半是为球员设计的,一个是为教练设计的。我如何检查ref.authData.uid的孩子是在球员还是教练的孩子?我的数据是不是用错误的方式构造的?

另外,每个uid的下面都有更多的孩子,而我的图表中没有包含这些孩子,其中包含了关于每个球员/教练的信息。下面是我在初步构建中使用的auth方法。

代码语言:javascript
运行
复制
if ref.authData != nil  {

     print("There is already a user signed in!")
     self.performSegueWithIdentifier("playerLogin", sender: self)

 } else {
     // No user is signed in
 }

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-29 19:04:31

tobeisdev有一个很好的答案(我会接受),并且链接的答案也会起作用。

我也想添加一个替代方案;既然教练和球员都是用户,那么为什么不采用标准的Firebase /users设计模式呢?

代码语言:javascript
运行
复制
users
  user_id_0
    type: "player"
    name: "Larry"
    team: "team_id_0"
  user_id_1
    type: "player"
    name: "Biff"
    team: "team_id_0"
  user_id_2
    type: "coach"
    name: "Benny"
    team: "team_id_0"

然后,您可以添加一个teams节点。

代码语言:javascript
运行
复制
teams
  team_id_0
    team_name: "nerds r' us"
    coach: user_id_2
    players:
       user_id_0: true
       user_id_1: true

这将使您能够查询特定的教练或球员,并获得他们的uid,以及知道哪个队的球员或教练是其中的一部分。你也可以组建一支球队,知道教练和球员是谁。

只是一个想法。

票数 1
EN

Stack Overflow用户

发布于 2016-04-28 22:05:31

对于您的第一个问题,我可以与您分享一些在这些父节点中搜索和检查任何ref-uid的方法,您可以使用以下代码行:

代码语言:javascript
运行
复制
let REF_BASE = Firebase(url: "https://yourapp.firebaseio.com")

REF_BASE.childByAppendingPath("players").observeEventType(.Value, withBlock: { snapshot in

        for snap in snapshot.children {
            let key = snap.key as String
            if key == "ref.authdata.uid-for-player-2" {
                print(snap.value as String) // to see its value
            }
        }

    })

REF_BASE.childByAppendingPath("players").childByAppendingPath("ref.authdata.uid-for-player-2").observeSingleEventOfType(.Value, withBlock: { snapshot in

        if snapshot.value as? String == nil {
            print("in usage")
        }
        else {
            print("free")
        }

    })

有关更多细节,请访问Jay's answer here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36925963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档