gpt4 book ai didi

firebase - Firebase 中的记录总数(我什么时候完成计数?)

转载 作者:行者123 更新时间:2023-12-03 00:10:25 25 4
gpt4 key购买 nike

计算表中的记录显然是一项手动工作,直到你们获得一些已经在开发中的漂亮的新功能;)

但是,我什至坚持使用 .on('value', ...) 手动运行来获取计数:

var table = new Firebase('http://beta.firebase.com/user/tablename');
var count = 0;
table.on('child_added', function(snapshot) {
count++;
// how do I know if this is the last child? i.e. the count is complete?
});

// when is it okay to use count?

我预见到任何类型的分页都会出现同样的问题,而且我觉得我对此有点愚蠢。我错过了什么?

对于获取用户队列中的消息数量来说,这从根本上来说是错误的模式吗?

最佳答案

child_added 事件没有“完成”的概念,因为可以随着时间的推移继续添加子项。如果您想立即获取子项的计数,您可以使用“value”从该位置获取当前快照,然后对子项进行计数。例如:

table.once('value', function(snapshot) {
var count = 0;
snapshot.forEach(function(childSnapshot) {
count++;
});
// do something with count.
});

或者,如果您希望计数不断更新,您可以使用 .on() 而不是上面的 .once()。但这在性能方面并不理想,因为您每次都会计算所有的 child 。幸运的是,您可以使用“child_added”和“value”的组合来有效地进行计数:

var count = 0;
table.on('child_added', function(snapshot) {
count++;
// how do I know if this is the last child? i.e. the count is complete?
});

table.on('value', function(snapshot) {
// do something with count.
});

这是有效的,因为“值”将在“初始”数据完成后触发一次,然后在数据发生变化时再次触发,因此您将获得不断更新的正确计数。不过,如果您希望删除子项,则还需要处理 child_removed。

关于firebase - Firebase 中的记录总数(我什么时候完成计数?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11618032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com