这取决于
sport_products节点下有多少数据(产品)以及要在其上检索数据的设备上的带宽。
因此,这将比所需的速度慢,因为您要检索所有实际产品而不是简单的计数器。为了解决这个问题,我建议您为数据库中所有产品保留一个单独的计数器,以便在用户每次添加或删除产品时都可以对其进行更新。尽管这需要更多代码来跟踪产品数量,但阅读起来将变得更加容易。
假设您有一个如下所示的数据库:
Firebase-root | --- productCounter: 500 | --- sport_products|--- productId | --- //Product details
您可以在数据库根目录下添加计数器。要获取计数器,只需在
productCounter属性上附加一个侦听器,然后从
DataSnapshot对象获取值即可。由于您可能会在多用户环境中使用此应用程序,因此我建议您使用Firebase
Transaction来增加/减少计数器,如本
帖子 中我的回答所述。
编辑:
除a之外的方法
ChildEventListener将在各个子节点上触发,并且不携带全部结果的知识。获得
sport_products节点乘积计数的唯一方法是在代码中保留自己的计数器,并在
onChildAdded()方法中递增计数器,在方法中递减计数器
onChildRemoved()。这为您提供了一个计数器,该计数器可以算出您的客户端代码已经处理了多少个子代。



