Javascript Firebase中的订单数据

Javascript Firebase中的订单数据,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我是Firebase的新手,我将使用以下标准构建从服务器收集的项目列表: 最多10项 按项目值排序(例如“计数”) 这是我的密码 FBRef.orderByChild("count").limitToLast(10).on("child_added", function(snapshot){} 它工作得很好,但是当插入新记录时,是否有Firebase方法可以检查并自动更新列表,如果新项目位于前10名?还是我需要自己去做 var FBRef = new Firebase('yours.fir

我是Firebase的新手,我将使用以下标准构建从服务器收集的项目列表:

  • 最多10项
  • 按项目值排序(例如“计数”)
这是我的密码

FBRef.orderByChild("count").limitToLast(10).on("child_added", function(snapshot){}
它工作得很好,但是当插入新记录时,是否有Firebase方法可以检查并自动更新列表,如果新项目位于前10名?还是我需要自己去做

var FBRef = new Firebase('yours.firebaseio.com');
FBRef.orderByChild("count").limitToLast(5).on("child_added", function(snapshot){
    var data = snapshot.val();
  var html = "<li>value: " + data.value + " - count: " + data.count + "</li>";
  $("#result").prepend(html);
});

$(document).ready(function () {
  $("#inputaddbtn").click(add);
});

function add(){
  var value = $("#inputvalue").val();
  var count = $("#inputcount").val();
  $("#inputcount").val("");
  $("#inputvalue").val("");
  FBRef.push({
    value : value,
    count : count
  })
}
var FBRef=newfirebase('yours.firebaseio.com');
FBRef.orderByChild(“计数”).limitToLast(5).on(“添加的子项”),函数(快照){
var data=snapshot.val();
var html=“
  • 值:”+data.value+”-count:“+data.count+”
  • ”; $(“#结果”).prepend(html); }); $(文档).ready(函数(){ $(“#inputaddbtn”)。单击(添加); }); 函数add(){ var值=$(“#inputvalue”).val(); 变量计数=$(“#输入计数”).val(); $(“#输入计数”).val(“”); $(“#inputvalue”).val(“”); 推({ 价值:价值, 计数:计数 }) }
    您需要监视更多事件并处理更多参数,以限制列表

    第一步:当某个元素已从该位置移除或(在您的情况下)不在查询范围内时,Firebase将触发
    child\u removed
    事件

    您可以处理该事件以从列表中删除子项:

    var FBRef = new Firebase('yours.firebaseio.com');
    var query = FBRef.orderByChild("count").limitToLast(5);
    query.on("child_added", function(snapshot){
        var data = snapshot.val();
      var html = "<li id='key_"+snapshot.key()+"'>value: " + data.value + " - count: " + data.count + "</li>";
      $("#result").prepend(html);
    });
    query.on("child_removed", function(snapshot){
      $('#key_'+snapshot.key()).remove();
    });
    
    var FBRef=newfirebase('yours.firebaseio.com');
    var query=FBRef.orderByChild(“计数”).limitToLast(5);
    query.on(“添加了child_”),函数(快照){
    var data=snapshot.val();
    var html=“
  • value:“+data.value+”-count:“+data.count+”
  • ”; $(“#结果”).prepend(html); }); 查询.on(“已删除子项”),函数(快照){ $('#key.'+snapshot.key()).remove(); });
    您会注意到,当添加孩子时,我给
    li
    一个id,然后当Firebase告诉我时,根据该id删除
    li


    这包括简单的添加/删除项目。对于处理所有情况的完整应用程序,您还应该处理
    child\u changed
    child\u moved
    。您可能还需要处理回调的第二个参数,它指示子项需要处理的项的键。但是,您的用例可能不需要处理这些情况,在这种情况下,上述内容就足够了。

    Firebase将触发所有必要的事件,以保留程序中计数最高的10个项目。但相关代码缺失。你能在JSFIDLE/jsbin中重现你的问题并在这里发布链接(和最少的代码)吗?这就是我所做的。我不想刷新整个列表,所以你能给我一些建议吗?