覆盖数据而不生成新的密钥/节点



我正在尝试覆盖数据库中的一些数据。结构很简单,是:

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'srecipe_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);

最新更新