使用带有上下文的firebase查询的聚合

时间:2016-03-09 13:47:43

标签: firebase polymer

在我的自定义Polymer元素中,我有一个查询firebase实例的方法,如下所示:

 _updateUser: function(user) {
        if(this._firebaseRef) {
          this._firebaseRef.off()
        }
        if(user) {

          var userLocation = ['xxxxx.firebaseio.com', 'users', this.user.uid].join('/');
          this._firebaseRef = new Firebase(userLocation);
          var query = this._firebaseRef.orderByChild("username")
          query.on("value", function(messageSnapshot) {
          messageSnapshot.forEach(function(messageData){
              this.set('usernames', []);
              console.log(this);
            });
          },null, this);

        }
      },

但是,我一直收到以下错误Uncaught TypeError: this.set is not a function。似乎this未根据api documentation

设置为预期的上下文

我可以知道如何在回调中成功调用this.set吗?感谢。

1 个答案:

答案 0 :(得分:3)

您还需要将上下文传递给forEach函数。

messageSnapshot.forEach(function (messageData) {...}, this)

messageSnapshot.forEach(function (messageData) {...}.bind(this))