如何在现有节点中轻松添加新信息(firebase + Swift 3)

时间:2017-08-16 19:21:56

标签: firebase swift3 firebase-realtime-database

我是一名新的程序员并且正在与firebase挣扎...... firebase网站上的内容对于没有经验的人来说还不够。我正在尝试在现有节点中添加新信息(-KrgRoE_GoZGoMZk_bxl)但是我根本做不到...看到我可以使用下面的代码获得我的最后一个注册:

ref = FIRDatabase.database().reference()
let last = ref?.child("CAD").child((FIRAuth.auth()?.currentUser?.uid)!)

        last!.observeSingleEvent(of: .value, with: { (snapshot) in
           print(snapshot.children.allObjects.last)

查看firebase数据:

tIFgcSHDWAYguUJ5jNPYhfuqT903
   KrgRoE_GoZGoMZk_bxl
{
  "COORDENADAS" : "(-25.462915289401252, -49.290945083371739)",
  "DATA" : "16/08/2017",
  "HORA" : "16:9:23",
  "LOCALIZACAO" : "Rua Professor Basílio Ovídio da Costa, 19",
  "PERIODO" : "1 Hora",
  "VALOR" : 3
}

1 个答案:

答案 0 :(得分:0)

根据documentation,您使用setValue添加新数据,使用updateChildValues更改数据。此外,您可以使用查询来限制返回到最后一个数据的子项数,而不是观察当前用户下的所有数据的值。现在我并不完全确定您尝试添加到子节点的内容,但访问一个子节点并向其添加新数据可能如下所示:

ref = FIRDatabase.database().reference() 
let last = ref?.child("CAD").child((FIRAuth.auth()?.currentUser?.uid)!)

last!.queryLimited(toLast: 1).observeSingleEvent(of: .value, with: { (snapshot) in
   print(snapshot.value)
   let value = snapshot.value as? NSDictionary
   // Do whatever you need to do with value

   let key = snapshot.key

   last.child(key).setValue(["newData": newData]) // add new key/value pair
})