我正在尝试将一个孩子添加到名为“ users_want_notification”的孩子。这似乎可行,但是当我尝试将另一个孩子添加到名为“ users_want_notification”的另一个孩子时,第一个孩子将被删除。我该如何更改,这样就不会删除第一个孩子?
我的代码:
run
Firebase:
答案 0 :(得分:0)
在子节点上调用setValue
时,该节点下的所有现有数据将替换为您传递给setValue
的值。如果我们来看您的第一个电话:
Database.database().reference()
.child("Notification").child("users").child(username)
.setValue(["username": username, "url": Foto_url])
这将替换/Notification/users/$username
下的所有现有数据,包括其users_want_notification
子节点下的所有数据。由于您随后在users_want_notification
下添加了一个新的子节点,因此该调用似乎替换了现有的子节点,但实际上是第一个删除所有数据的setValue
。您可以通过暂时注释掉第二个呼叫来进行测试,然后您会发现整个users_want_notification
都消失了。
您有两个主要选择:
对单独的setValue
和username
属性使用单独的url
调用:
let userRef = Database.database().reference()
.child("Notification").child("users").child(username)
userRef.child("username").setValue(username)
userRef.child("url").setValue(Foto_url])
userRef.child("users_want_notification").child(Pro_user)
.setValue(["Pro_user": Pro_user, "toDeviceID": AppDelegate.DEVICEID])
由于所有setValue
的调用现在都发生在低于/Notification/users/$username
的级别,因此整个节点将永远不会被替换。
对所有数据使用单个updateChildNodes
调用,执行multi-location update(docs)。