我有一个聊天应用程序,我在离子和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控制台中,但无论出于何种原因,当用户加入频道时,我获得了成功的控制台日志,但数据库没有更新随着新的信息。我真的迷失了这个,可以真正使用一些帮助。
答案 0 :(得分:0)
在我看来,你想要使用一套而不是更新
this.afDB.database.ref('/chat/members/' + type + '/' + user_id)
.set({active: true, joinedAt: firebase.database.ServerValue.TIMESTAMP});