我在向 Firebase 实时数据库添加新节点时遇到了一些问题。添加 child 时我得到了一些数据,但问题是我检索了键和 1 个值,但总共有 2 个值。
我有以下结构:
-- groups
-- id
-- members
-- id
--device_name
--device_type
我观察成员的 child 。我想在添加该子项时检索 id 和底层元素(device_name、device_type)。
我用这段代码来做到这一点:
let ref = Database.database().reference().child("groups").child(roomObject.getAutoChildId()).child("members");
ref.observe(.childAdded, with: { (snapshot) in
print(snapshot.debugDescription)
})
但是现在问题来了。 snapshot.debugDescription 返回的不是该快照中的所有值。示例:
Snap (ooDpijaPrKgcBA70LUXYbpohvi42) {
"device_name" = test;
}
device_type 键不存在,我不知道为什么。我需要这个:
Snap (ooDpijaPrKgcBA70LUXYbpohvi42) {
"device_name" = test;
"device_type" = test;
}
添加结构:
最佳答案
我已经找到问题所在了。它与 .childAdded 无关,该部分工作正常。
插入时出错。我所做的是:
let insertRef = reference.child("groups").child(roomKey).child("members").child(roomCodeArray[1])
insertRef.child("device_name").setValue(roomCodeArray[2])
insertRef.child("device_type").setValue(roomCodeArray[3])
但是 firebase 非常快,当插入 device_name 时,其他设备会检索 onchildChanged 事件。此时未添加设备类型。
我的解决方案:
let childInsert = [
"device_name" : roomCodeArray[2],
"device_type" : roomCodeArray[3]
]
insertRef.setValue(childInsert)
同时插入值。然后它就像变魔术一样发挥作用。
关于swift - Childadded 检索一个 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45938871/