我正在开发一个带有聊天页面的应用程序。 我正在使用Firebase实时数据库和我的聊天结构,如下所示:
我收到如下新消息:
fireBuddyChats = firebase.database().ref('/buddychats');
this.fireBuddyChats.child(this.currentUserId)
.child(this.buddy.uid)
.orderByKey()
.limitToLast(topMsgCount)
.on('value', (snapshot) => {
this.buddyMessages = [];
let temp = snapshot.val();
for(var tempKey in temp) {
this.buddyMessages.push(temp[tempKey]);
}
this.events.publish('newmessage');
}
我正在监听“ newmessage”事件,以在聊天页面中显示新消息。 问题是:当我与某人聊天时,如果另一个朋友发送任何消息,则会运行数据库触发器(如上所述),并且聊天页面会显示另一个朋友的消息。我认为不应触发该事件,因为“ this.buddy.uid”不同。我想念的是什么?有什么建议吗?
答案 0 :(得分:1)
也许为了防止这种情况,您可以在上面添加一个条件语句,以检查用户(当前用户正在与之交谈的)是否确实具有“ this.buddy.uid”的uid。因此,也许对于您可能在其中包含的代码而言:
if (socket.uid == this.buddy.uid).then
这应该防止其他用户在检查用户是否经常访问时加入/添加到实时数据库对话中。
希望这会有所帮助。