swift - Childadded 检索一个 key

标签 swift firebase firebase-realtime-database

我在向 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;
}

添加结构:

enter image description here

最佳答案

我已经找到问题所在了。它与 .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/

相关文章:

android - onDataChange 的值返回 null

javascript - firebase - 获取唯一的推送ID

swift - 如何在 Swift 1.2 中显示 json 响应?

ios - willDisplayCell 委托(delegate)方法 Swift

node.js - 如何使用 Node.js 获取和设置数据到 Firebase?

javascript - stripe firebase 函数设置默认付款

swift - 如何调用不带参数的泛型函数?

swift - NSSearchField TextDidChange 的方法是什么?

javascript - 如何使用 javascript 获取自动 id 以在 firebase 中获取嵌套数据?

ios - 获取 Firebase 列中的所有数据