初学者都快和火基地在这里!我有一个像这样的数据库:
数据库
播放器
参.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方法。
if ref.authData != nil {
print("There is already a user signed in!")
self.performSegueWithIdentifier("playerLogin", sender: self)
} else {
// No user is signed in
}
谢谢你的帮助!
发布于 2016-04-29 19:04:31
tobeisdev有一个很好的答案(我会接受),并且链接的答案也会起作用。
我也想添加一个替代方案;既然教练和球员都是用户,那么为什么不采用标准的Firebase /users设计模式呢?
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节点。
teams
team_id_0
team_name: "nerds r' us"
coach: user_id_2
players:
user_id_0: true
user_id_1: true
这将使您能够查询特定的教练或球员,并获得他们的uid,以及知道哪个队的球员或教练是其中的一部分。你也可以组建一支球队,知道教练和球员是谁。
只是一个想法。
发布于 2016-04-28 22:05:31
对于您的第一个问题,我可以与您分享一些在这些父节点中搜索和检查任何ref-uid的方法,您可以使用以下代码行:
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。
https://stackoverflow.com/questions/36925963
复制相似问题