Jquery 拆下div+;它在Firebase数据库中的索引,并在容器中添加新的div

Jquery 拆下div+;它在Firebase数据库中的索引,并在容器中添加新的div,jquery,firebase,Jquery,Firebase,我是Firebase的新手,我开始在一个聊天室工作,除了一件事之外,它还能正常工作。我想对要显示的消息数量设置一个上限,我已经用限制(13)完成了这项工作。下一部分是我不太明白怎么做。。当上限为13时,我希望从聊天中删除第一条消息(#messagesDiv div:nth child(1)),并将其从Firebase数据库中删除。另外,当我删除第一条消息时,我希望同时在列表底部添加新消息。我试过查看Firebase文档,但没有找到任何接近我想要实现的目标。如果问题含糊不清,请让我知道如何更清楚地

我是Firebase的新手,我开始在一个聊天室工作,除了一件事之外,它还能正常工作。我想对要显示的消息数量设置一个上限,我已经用限制(13)完成了这项工作。下一部分是我不太明白怎么做。。当上限为13时,我希望从聊天中删除第一条消息(
#messagesDiv div:nth child(1)
),并将其从Firebase数据库中删除。另外,当我删除第一条消息时,我希望同时在列表底部添加新消息。我试过查看Firebase文档,但没有找到任何接近我想要实现的目标。如果问题含糊不清,请让我知道如何更清楚地回答。谢谢你的帮助

dataAddQuery = myDataRef.startAt().limit(13); //<-- Maximum messages displayed

dataAddQuery.on('child_added', function(snapshot) {
    var message = snapshot.val();
    displayChatMessage(message.name, message.text);
});

dataRemoveQuery = myDataRef.endAt().limit(1); //<-- Does this remove the 1st message?

dataRemoveQuery.on('child_removed', function(snapshot) {
    var message = snapshot.val();
    removeChatMessage(message.name, message.text);
    //Tried to call displayChatMessage here but that didn't work the way I wanted
});

$('#messageInput').keypress(function (e) {
    if (e.keyCode == 13) {
        var name = $('#nameInput').val();
        var text = $('#messageInput').val();
        myDataRef.push({name: name, text: text});
        $('#messageInput').val('');
    }
});

function displayChatMessage(name, text) {

    $('<div/>').text(text).prepend($('<b/>').text(name+': ')).appendTo($('#messagesDiv'));
};

function removeChatMessage(name, text) {

    $('#messagesDiv div:nth-child(1)').remove();
}

dataAddQuery=myDataRef.startAt().limit(13)// 我不再试图将视图和数据都限制在13个项目上,而是只关注数据。如果可以将子对象的数量限制为13,则可以简单地显示所有子对象

我写道:

我只需将子元素的
id
设置为Firebase ref的
name
即可识别HTML中的子元素


我希望流动是明确的,如果不检查垃圾箱,让我知道

我不完全清楚您的用例。是否要将视图限制为仅显示13条消息?或者您想将Firebase限制为只包含13条消息吗?如果可能的话,两者都可以,因为我不想存储旧消息。然后我将不进行查询。如果您有超过13个孩子,只需检索所有孩子并从Firebase中删除最大的孩子(ren)。我会写一个简单的例子。真是聪明的解决方案。。我带着一个溢出:自动;显示超过13个,但这个解决方案,我一定会在我的其他项目中使用。谢谢
var childnames = [];
ref.on('child_added', function(snapshot) {
  // display child
  childnames.push(snapshot.name());
  if (childnames.length > 13) {
    ref.child(childnames[0]).remove();
    childnames = childnames.slice(1);
  }
});
ref.on('child_removed', function(snapshot) {
  list.removeChild(document.getElementById(snapshot.name()));
});