Firebase child_added创建重复项

m

我正在使用Firebase开发HTML5移动消息传递应用程序。我遇到了无法解决的问题。该应用程序具有多个渠道(聊天室)。第一次将消息添加到某个频道时,它会按预期工作,但是当我转到其他频道并将新消息发布到该频道时,我返回上一个频道并发布另一个消息,我得到的是上次发布的副本信息。当我重新加载页面时,重复项消失了,但我不希望完全不显示重复项。下面是我的代码:

function loadChatMessages(channelID) {
    $('#chatMessages').html('');
    var msgObj = {};
    var channelRef = globals.channelsBase + '/' + channelID + '/messages';

    var channelMessages = new Firebase(channelRef);
    channelMessages.on('child_added', function (snapshot) {
        msgObj = snapshot.val();
        var id = snapshot.name().toString();

            var messageTime = application.Functions.renderTime(msgObj.messageTime);
            var tails = '<div class="message-tails-wrap"><div class="message-tails"></div></div>';
            var html = '<li class="chatEl ' + sentByClass + '" id="'+id+'">';
            html += tails;
            html += msgObj.message;
            html += '<span class="sender"> ' + by + ' </span> <span class="tmp-recipient"> ' + msgObj.recipient + ' </span>';
            html += '<span class="time-stamp msg-time" >';
            html += messageTime;
            html += '</span></li>';
            $(html).appendTo('#chatMessages');

        /// TODO: TEMP solution!
        var prevID = 0;
        $('#chatMessages li').each(function(n) {
            var id = $(this).attr('id');
            if(id == prevID){
               // console.log(id + ' is a duplicate. Remove it');
                this.remove(); // the necessary evil....                 
            }
            prevID = id;
        });

    });

}
模仿

听起来您loadChatMessages()每次进入房间都在运行,并且随着用户在房间中四处移动,您会看到对on('child_added'回调的重复调用

这是因为您每次重新输入房间时都会添加新的回叫。要解决此问题,请在用户离开房间时进行一些清理。在该清理功能中,请确保使用删除旧的侦听器.off("child_added")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除对Firebase数据中child_added的引用

来自分类Dev

删除对Firebase数据中child_added的引用

来自分类Dev

在Firebase中使用child_added / child_changed进行无限循环

来自分类Dev

Firebase:如何在所有初始的“ child_added”调用之后运行回调?

来自分类Dev

有什么方法可以使用firebase的云功能从“ child_added”事件中的节点获取数据?

来自分类Dev

仅用于获取ID的具有空值的firebase push方法是否会触发child_added事件?

来自分类Dev

在插入Firebase之前检查重复项

来自分类Dev

删除后触发child_added

来自分类Dev

跳过Firebase数据库中的重复项

来自分类Dev

检查 firebase 中的两个或多个重复项

来自分类Dev

Kotlin Firebase 解析重复

来自分类Dev

Firebase 数据重复问题

来自分类Dev

计算重复条目 Firebase

来自分类Dev

Firebase child()与Angularfire $ firebaseObject

来自分类Dev

在Firebase中创建逻辑

来自分类Dev

Firebase创建用户承诺

来自分类Dev

Firebase如何创建用户?

来自分类Dev

从Firebase查询创建ListView

来自分类Dev

如何检测child_added事件是否是本地事件?

来自分类Dev

读取Firebase数据项

来自分类Dev

Firebase / AngularFire创建用户信息

来自分类Dev

在Firebase上创建/添加用户

来自分类Dev

避免创建额外的孩子Firebase

来自分类Dev

无法使用Firebase创建帐户?

来自分类Dev

Firebase / AngularFire创建用户信息

来自分类Dev

动态创建vuefire Firebase参考

来自分类Dev

在 Firebase 函数中创建 FormData()

来自分类Dev

您如何从逻辑上验证 firebase 'child_ added' 数据是否存在并提供处理逻辑?

来自分类Dev

FIrebase Cloud Messaging,无法解析依赖项com.google.firebase:firebase-core:9.0.2

Related 相关文章

热门标签

归档