firebase.database.ref(“ ...”)。set({})创建一个新对象,而不是更新现有对象。

时间:2018-10-07 08:11:26

标签: typescript firebase firebase-realtime-database angularfire2

我正在为我的网站上的帖子构建一个喜欢/不喜欢的系统。每次用户单击“喜欢”按钮时,喜欢的数量都会在数据库中更新。存储在数据库中的对象具有图像的url,类别和喜欢的数目作为其键。

以下是我的更新代码:likeedButton(img)是一个当用户单击“赞”按钮时调用的函数。

likedButton(img) {
    var url = img.src;
    var x = this.db.list('/userPosts',

  ref => ref.orderByChild('url').equalTo(url));


  x.snapshotChanges().subscribe(

    (datas) => { 
      var keys  = datas[0]['key'];
      var obj = x.valueChanges().subscribe((z) => {
        var n = z[0]['likes'];
        n++;
        console.log(n);
        firebase.database().ref('/userPosts'+keys+'/likes').set({
          'likes' : n
      });


      });

    });
  }
}

我希望更新“喜欢”的现有值。但是该函数结束了创建新对象的过程。

1 个答案:

答案 0 :(得分:0)

您应该使用update代替,因为对对象的调用集将完全替换它或在不存在的情况下创建新记录

firebase.database()。ref('/ userPosts'+ keys +'/ likes')。update({'likes':n})