数据库
玩家
ref.authdata.uid换球员-1
ref.authdata.uid换球员-2
ref.authdata.uid换球员-3
教练
ref.authdata.uid换教练1
ref.authdata.uid换教练-2
ref.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
}
谢谢你的帮助!
答案 0 :(得分:1)
tobeisdev有一个很好的答案(我会接受),链接的答案也会有效。
我想补充一个替代方案;因为教练和玩家都是用户,为什么不选择标准的Firebase /用户设计模式
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
team_id_0
team_name: "nerds r' us"
coach: user_id_2
players:
user_id_0: true
user_id_1: true
这将使您能够查询特定的教练或球员并获得他们的uid,以及知道该球员或教练所属的球队。你也可以找一个团队,知道教练和球员是谁。
只是一个想法。答案 1 :(得分:0)
对于您的第一个问题,我可以与您分享一些搜索和检查这些父节点中任何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。