我正在尝试覆盖数据库中的一些数据。结构很简单,是:
recipes {
user_1{
recipe_1{data}
recipe_2{data}
}
user_2{
recipe_1{data}
recipe_2{data}
}
}
我正在尝试更新一个项目并使用它用任何更改覆盖它,其中recipe
是带有我尝试保存的更新数据的新对象,key
是为数据库中每个项目生成的唯一键。在数据库本身中,标签recipe_1
等将替换为其唯一键。因此,此路径应该只是替换整个recipe_2
,而不是添加新节点。
firebase.database().ref('recipes/' + userID + "/" + key).set({ recipe });
所以说我试图用这个更新user_1's
recipe_2
,在通过之后,数据库结构将是:
data {
user_1{
recipe_1{data}
recipe{
recipe_2{data}
}
}
user_2{
recipe_1{data}
recipe_2{data}
}
}
如何在更改配方内容时覆盖项目并保持数据库结构不变?
您需要从set
函数中删除额外的{}
,该函数正在您尝试更新的键值中创建新节点。
将代码
更改为firebase.database().ref('recipes/' + userID + "/" + key).set(recipe);