【发布时间】:2021-11-09 00:20:35
【问题描述】:
我在从 Firebase 数据库中检索子密钥和父密钥时遇到问题。
我有一个如下所示的 firebase 数据库:
- friendlies
- 38UUDYtde4WF5AVcxcw6o9qaPBM2
- GYtQbt3KX1RveVeBAHd08u0Pdm42: true
- GYtQbt3KX1RveVeBAHd08u0Pdm42
- 38UUDYtde4WF5AVcxcw6o9qaPBM2: true
我通过以下方式成功获取了这些数据:
var REF_FRIENDLIES = Database.database().reference().child("friendlies")
REF.FRIENDLIES.queryOrderedByKey().observeSingleEvent(of: .value, with: {
snapshot in
snapshot.children.forEach({
(snapChild) in
print("SnapChild: \(snapChild)")
let child = snapChild as! DataSnapshot
print("Child Key: \(child.key)")
print("Child Parent Key: \(child.ref.parent?.key)")
})
print("Snapshot: \(snapshot)")
})
输出如下:
SnapChild: Snap (38UUDYtde4WF5AVcxcw6o9qaPBM2) {
GYtQbt3KX1RveVeBAHd08u0Pdm42 = 1;
}
Child Key: 38UUDYtde4WF5AVcxcw6o9qaPBM2
Child Parent Key: Optional("friendlies")
SnapChild: Snap (GYtQbt3KX1RveVeBAHd08u0Pdm42) {
38UUDYtde4WF5AVcxcw6o9qaPBM2 = 1;
}
Child Key: GYtQbt3KX1RveVeBAHd08u0Pdm42
Child Parent Key: Optional("friendlies")
Snapshot: Snap (friendlies) {
38UUDYtde4WF5AVcxcw6o9qaPBM2 = {
GYtQbt3KX1RveVeBAHd08u0Pdm42 = 1;
};
GYtQbt3KX1RveVeBAHd08u0Pdm42 = {
38UUDYtde4WF5AVcxcw6o9qaPBM2 = 1;
};
}
子键工作正常;我遇到的问题是检索父数据。我要返回的是一个子 ID,以及它的持有者/父数据。所以,我想返回GYtQbt3KX1RveVeBAHd08u0Pdm42作为子键,但检索38UUDYtde4WF5AVcxcw6o9qaPBM2作为父键,但是作为父键返回的是friendlies。
快照清楚地包含这个,但我不知道如何访问它。
编辑:
所以child.ref.description() 将返回我想要的节点,但在我的数据库地址的末尾:
https://my-project.firebaseio.com/friendlies/38UUDYtde4WF5AVcxcw6o9qaPBM2 我可以只替换字符串的 url 部分,但这似乎是一个非常糟糕的做法。
【问题讨论】:
标签: ios swift firebase firebase-realtime-database