Firebase更新节点,而不是添加新节点

时间:2016-09-11 10:04:28

标签: javascript firebase firebase-realtime-database

目前这是我的firebase数据库的外观。

enter image description here

我正在尝试执行更新,当我点击like按钮时,用户将出现在liked属性中(上面的第二个)。目前它只是硬编码,但代码并没有完全按照我的意愿去做。

 function liked(name, useruid, user_liked){
      var postData = {
        name: name,
        useruid: useruid,
        user_liked: user_liked
      };

      var newPostKey = firebase.database().ref().child('users').push().key;

      var updates = {};
      updates['/users/' + name + '/' + '/liked/' + user_liked] = postData;
      return firebase.database().ref().update(updates);
    }

我用liked(current_user_name, user_array[i].useruid, 'Hannah')

调用此函数

我希望liked: "liked属性可以阅读liked: "liked", "Hannah" 但是,它会执行以下操作:

enter image description here

它添加了我不想要的信息,而不是添加到数组,它已经改变了它。它必须是一个微小的变化,但我不能看到它

在更新前导出json:

{
  "users" : {
    "rich" : {
      "gender" : "male",
      "liked" : "liked",
      "name" : "rich",
      "not_liked" : "liked",
      "username" : "rich@rich.com",
      "useruid" : "5xO85K2EBOS6Itj7lKoGafm19i02"
    }
  }
}
更新后

导出json:

{
  "users" : {
    "rich" : {
      "gender" : "male",
      "liked" : {
        "Hannah" : {
          "name" : "rich",
          "user_liked" : "Hannah",
          "useruid" : "5xO85K2EBOS6Itj7lKoGafm19i02"
        }
      },
      "name" : "rich",
      "not_liked" : "liked",
      "username" : "rich@rich.com",
      "useruid" : "5xO85K2EBOS6Itj7lKoGafm19i02"
    }
  }
}

0 个答案:

没有答案