我是Firebase的新用户,我将构建一个从服务器收集的项目列表,其中包含以下标准:
这是我的代码
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
})
}
答案 0 :(得分:0)
您需要监控更多事件并处理更多参数以保持列表有限。
作为第一步:当某个元素从该位置移除或(在您的情况下)超出查询范围时,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_changed
和child_moved
。而且你可能还想处理回调的第二个参数,它指示了孩子需要追踪的项目的关键字。但也许你的用例并不需要处理这些情况,在这种情况下上面就足够了。