firebase数据库未更新,即使响应成功

时间:2017-08-28 20:04:06

标签: javascript firebase firebase-realtime-database ionic2 angularfire2

我有一个聊天应用程序,我在离子和firebase中构建。我有一个简单的连接通道函数,它接受通道ID,并将当前用户ID添加到数据库中的成员列表中。根据我看到它正常工作的一切,但每当我去firebase控制台时,它都没有在数据库中显示新项目。这是我用来在用户加入聊天频道时将项目添加到数据库的代码...

joinChannel(type, user_id) {
    return new Promise((resolve, reject) => {
      if(this.availableChannels[type] !== undefined) {
        console.log("joining channel: " + type);
        console.log('for user: ' + user_id);
        let update = {};
        update['/chat/members/' + type + '/' + user_id] = {active: true, joinedAt: firebase.database.ServerValue.TIMESTAMP};
        this.afDB.database.ref().update(update).then(() => {
          console.log("updated /chat/members/" + type + "/" + user_id + " to");
          console.log({active: true, joinedAt: firebase.database.ServerValue.TIMESTAMP});
          this.activeChannel = '/channels/' + type;
          resolve(true);
        })
      } else {
        reject("channel_not_found");
      }
    });
  }

现在,如果我在chrome中打开开发人员控制台并点击加入频道,我会在控制台中看到...

joining channel: news
chat.ts:210 for user: [USERIDHERE]
chat.ts:214 updated /chat/members/news/[USERIDHERE] to
chat.ts:215 Object
              active: true
              joinedAt: Object
                .sv: "timestamp"
              __proto__: Object
              __proto__: Object

因此控制台显示数据库运行更新,但是如果我然后登录我的firebase控制台,则“chat / members”数据库中没有“新闻”项。我已尝试使用不同的渠道,并始终从firebase获得相同的确切响应,说它更新了数据库,但在firebase控制台中该项仍为空白。

以防需要this.afDB变量 public afDB: AngularFireDatabase 在构造函数中。我知道数据库正在运行,因为我可以更新内容,在聊天频道中发送消息并且它们出现在firebase控制台中,但无论出于何种原因,当用户加入频道时,我获得了成功的控制台日志,但数据库没有更新随着新的信息。我真的迷失了这个,可以真正使用一些帮助。

1 个答案:

答案 0 :(得分:0)

在我看来,你想要使用一套而不是更新

this.afDB.database.ref('/chat/members/' + type + '/' + user_id)
.set({active: true, joinedAt: firebase.database.ServerValue.TIMESTAMP});