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

时间:2019-12-18 04:57:33

标签: javascript firebase-realtime-database

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

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}
  }
}

更改配方内容时,如何覆盖项目并保持数据库结构不变?

1 个答案:

答案 0 :(得分:1)

您需要从{}函数中删除多余的set,该函数正在您要更新的键值中创建一个新节点。

将代码更改为
firebase.database().ref('recipes/' + userID + "/" + key).set(recipe);