【问题标题】:Getting Firebase Realtime Database Value By Child按子级获取 Firebase 实时数据库值
【发布时间】:2020-06-21 17:10:15
【问题描述】:

我正在开发一个具有聊天页面的应用程序。 我正在使用 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”不同。我错过了什么?有什么建议吗?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    也许为了防止这种情况,您可以在上面添加一个条件语句来检查用户(当前用户正在与之交谈)是否实际上具有“this.buddy.uid”的 uid。因此,也许对于您可能包含在某处的代码:

    if (socket.uid == this.buddy.uid).then
    

    这应该防止其他用户加入/添加自己到实时数据库对话中,因为它会不断检查用户是否。

    希望这会有所帮助。

    【讨论】:

    • 感谢您的建议。我想到了这个解决方案。实际上,我问我是否可能对 Firebase 实时数据库做错了什么。
    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    相关资源
    最近更新 更多