Firebase中的订单数据

Order data in Firebase

本文关键字:数据 单数据 Firebase      更新时间:2023-09-26

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

  • 最多10个项目
  • 按项目值排序(例如"计数")

这是我的代码

FBRef.orderByChild("count").limitToLast(10).on("child_added", function(snapshot){}

它工作得很好,但当插入新记录时,如果新项目在前10名,是否有Firebase方法可以检查并自动更新列表?或者我需要自己去做?

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
  })
}

您需要监视更多的事件并处理更多的参数来限制列表。

作为第一步:当元素已从该位置移除或(在您的情况下)位于查询之外时,Firebase将触发child_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();
});

您会注意到,当添加子项时,我会给li一个id,然后当Firebase告诉我时,根据该id删除li

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