Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以将orderByChildren或orderByValue从一个子项减去另一个子项吗?(或使用计算风险值的任何其他方法)_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 我可以将orderByChildren或orderByValue从一个子项减去另一个子项吗?(或使用计算风险值的任何其他方法)

Javascript 我可以将orderByChildren或orderByValue从一个子项减去另一个子项吗?(或使用计算风险值的任何其他方法),javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,有办法做到这一点吗?还是用oderByValue?还有别的意思吗 fb.orderByChild('upvotes - downvotes').startAt(_start).endAt(_end).limitToLast(_n).on("child_added", function(dataSnapshot) { data.push(dataSnapshot.val()); }); 注:是的,我已经考虑过在数据库中创建第三个条目来跟踪(向上投票和向下投票),

有办法做到这一点吗?还是用oderByValue?还有别的意思吗

fb.orderByChild('upvotes - downvotes').startAt(_start).endAt(_end).limitToLast(_n).on("child_added", function(dataSnapshot) {
          data.push(dataSnapshot.val());
       });

注:是的,我已经考虑过在数据库中创建第三个条目来跟踪(向上投票和向下投票),但这正是我想要避免的。不,
orderByChild
完全按照它的名字做。目前,无论是在数据模型中,还是在查询条件中,都无法定义此类“计算”节点


因此,您应该将差异直接存储在数据库中,使用安全规则在其上设置索引,并将其用于查询。使用更新计票结果将有助于以干净的方式实现它。

您希望对多少条记录进行排序?可能有数百万条。我想获得前五名(上升票和下降票)。@FrankvanPuffelen有什么办法可以做到这一点吗?我知道orderByChild做什么,但我需要一些方式来表达我的问题。我已经在用一个事务更新投票计数。但我有两个不同的变量:向上投票和向下投票。我真的需要创建第三个变量并在每次更新upvote和downvote时更新它吗?必须有一个更优雅的解决方案。不幸的是,是的,您需要第三个变量。这种限制在非SQL数据库中并不少见。我个人认为,如果您使用post节点上的事务来管理计数器,这并不是不雅观的。我感谢您的回答,但我想等待,看看是否有更好的选择,因为我已经想到了这一个,并且确实不想使用它,因为bandwith浪费:/我不知道这里浪费了多少带宽,但这是你的决定。好吧,也许我对带宽使用的理解是错误的,但是每次修改向下投票和向上投票时修改总分投票的新的第三次交易不会使用更多的带宽吗?