考虑Firebase实时数据库中的现有数据
db.ref('path/to/child').once('value')
{
"data":{
"this":"value",
"that":"value"
}
}
将此设置操作视为原始数据
db.ref('path/to/child').update({"data":{"this":"newValue"}})
{
"data":{
"this":"newValue",
}
}
我们如何执行更新以保留未更改的数据
db.ref('path/to/child').foo({"data":{"this":"newValue"}})
{
"data":{
"this":"newValue",
"that":"value"
}
}
答案 0 :(得分:2)
现在,您的代码告诉Firebase更新data
下的整个 path/to/child
子级。相反,您应该引用要更新的最终子节点的最深层路径:
db.ref('path/to/child/data').update({"this":"newValue"})
请注意,我将data
放在了引用中,而不是要更新的对象中。
答案 1 :(得分:0)
我遇到了同样的问题,但上面的示例不起作用。我根据同样无效的文档得出了同样的结论。它仍然覆盖了“数据”中的内容。
在数据(在我的情况下是对象键)后用斜杠测试对我有用。也许我仍然误解了它是如何工作的,但我想我会添加这个以防其他人遇到同样的问题。如果我错了,请解释。
这确实按我的预期工作。
db.rev('path/to/child/data/').update({"this": "newValue")
// almost exact path I use on some random test data
// path -> root/userid/list/listid/
db.rev('user/2FsJBrxZHQFff61QkMIuTV49KBUcQ2/list/MOwh_FwDmlKbxsfUmZS/').update({"name": "newValue")