EDITED
我必须在我的Firebase数据库中的节点utenti中添加一对新的key:值,结构如下,但不删除已存储在db中的先前对
我从一组自定义对象中获取这些对,我已经存储了我必须添加的所有用户
所以对于周期:
for user in self.usersarray {
let utentiRef = root.child("groups").child(groupId!).child("utenti")
let refToAdd = utentiRef.child(user.id!)
refToAdd.setValue(true)
}
它可以工作并添加数组中的所有用户,但它会覆盖已存储在firebase上的以前用户。
我注意到,当我从另一个视图控制器运行时
root.child("groups").child(groupId!).child("utenti").updateChildValues([user.id!: true])
添加单个用户时没有覆盖,所以问题出在哪里?
答案 0 :(得分:1)
这就是你要做的事情:
root.child("groups/\(groupId!)/utenti/\(user.id!)").setValue("true")
答案 1 :(得分:1)
这应该是直截了当的。我认为你错过了将子节点添加到utenti节点的部分。试试这个:
let utentiRef = self.ref.child(groups).child(groupId).child("utenti")
let refToAdd = utentiRef.childByAutoId()//or whatever the key name is; .child("xyz")
refToAdd.setValue(true)
结果
groups
the_group_id
utenti
-k99asd9j9jaasj: true
并且不会覆盖现有节点。如果代码再次运行,将导致
groups
the_group_id
utenti
-k99asd9j9jaasj: true
-kYU9isj99f0392: true
答案 2 :(得分:0)
我发现我正在使用整个节点groupId的设定值调用上面某行的另一个更新,因此它被删除然后仅使用新值重新填充,抱歉浪费了你的时间...... 无论如何,两个答案都与初始代码相同,没有错误,只有不同的方式来做同样的事情