如何在现有节点内添加新节点?

时间:2019-07-28 08:36:18

标签: swift firebase firebase-realtime-database

我正在尝试在现有节点内创建一个新节点。我尝试过的其他代码只是在Mariot中添加了信息。我试图将节点放入Mariot“来宾”中,然后自动ID,然后输入信息。

  • 酒店
    • 马里奥特
    • 地址:########
    • 联系人:########
    • 电子邮件:########
    • 唯一ID:########

我想在Mariot内放置另一个节点“来宾”

下面是我尝试过的代码。

@IBAction func acceptBtn(_ sender: Any) {
Database.database().reference().child("hotels").queryOrdered(byChild: 
"uniqueID").queryEqual(toValue: requestID).observe(.childAdded) {
(snapshot) in

snapshot.ref.updateChildValues(["email":email, "contact":contact])
}
}

我希望它看起来像这样。

  • 酒店
    • 马里奥特
    • 地址:########
    • 联系人:########
    • 电子邮件:########
    • 唯一ID:########
    • 客人
      • (自动ID)
      • 电子邮件:########
      • 联系人:########
      • (自动ID)
      • 电子邮件:########
      • 联系人:########
      • (自动ID)
      • 电子邮件:########
      • 联系人:########

1 个答案:

答案 0 :(得分:0)

要在子节点下添加新值:

ref.updateChildValues(["guest/email":email, "guest/contact":contact])

如果您还希望在其中添加自动ID:

let key = ref.childByAutoId().key
ref.updateChildValues(["guest/\(key)/email":email, "guest/\(key)/contact":contact])

但是我不确定您是否真的需要在这里使用updateChildValues。您也许也可以简单地做到:

ref.childByAutoId().setValue(["email":email, "contact":contact])