首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将消息追加到chatbox

将消息追加到chatbox
EN

Stack Overflow用户
提问于 2016-03-18 16:42:40
回答 1查看 387关注 0票数 0

所以我目前正忙于一个chatbox,它将所有的消息存储在Firebase中,并立即将消息附加到messagebox中。问题是,Firebase以某种顺序获取消息,我以某种方式附加到chatbox,当我刷新它时,它再次不同。

代码语言:javascript
复制
function init_chatbox() {
    $('.empty-chat').show();
    ref.child("/chatboxes/{{ chatbox.pk }}/messages/").on("child_added", function (snapshot) {
        $('.empty-chat').hide();

        var object = snapshot.val();
        var key = snapshot.key();
        var name = "";

        ref.child("/users/" + object['user_id'] + "/name").once('value', function(snapshot) {
            name = snapshot.val();

            var timestamp = object['timestamp'];
            var message = object['message'];

            extra_html = ' <a href="#/" class="remove" onclick="delete_message(\'' + key + '\')">(remove)</a><a href="#/" class="edit" onclick="load_modal(\'' + key + '\')">(edit)</a>';



            $('ul.chat-messages').append('<li class="' + key +'"><p class="author"><span>' + name + '</span><span></span><span class="time" data-livestamp="' + timestamp + '"></span>' + extra_html + '</p><p class="message">' + message + '</p></li>');
        });
    });

当我有这样的代码(使用.append)时,它会立即显示这样的代码:

代码语言:javascript
复制
Kevin 2 hours ago (remove)(edit)
some message here
John 10 minutes ago (remove)(edit)
test
John 2 minutes ago (remove)(edit)
msg
Kevin few seconds ago (remove)(edit)
test

当我刷新页面时,消息将显示在页面顶部,就像顺序应该显示的那样。事情是这样的,我也尝试了.prepend,但它只是给出了另一个,这也是不正确的(在顶部发布新的消息,但当刷新它时,它显示良好的顺序,但最后的消息在顶部)。

我希望有人能帮我解决这个问题,我一直在努力解决这个问题

EN

回答 1

Stack Overflow用户

发布于 2016-03-18 17:18:27

你应该看看firebase文档中的orderByChild()

基本上,您可以根据消息的时间戳对消息进行排序。如下所示:

代码语言:javascript
复制
ref.child("/chatboxes/{{ chatbox.pk }}/messages/")
   .orderByChild("timestamp")
   .on("child_added", function (snap) { ... });

具有最低时间戳的消息将首先出现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36079738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档