我想知道如何在Firebase中计算Reference内部快照的数量,因此下一个示例我可以获得值为5的值。
pod 'GoogleMaps'
pod 'GooglePlaces'
我只想在应用程序启动时计算,而不是在每个数据库更改中计数,所以我不打算在引用上使用ValueEventListener或SingleValueEventListener。
这可能吗?
答案 0 :(得分:0)
要计算引用所具有的子项数,您必须添加ValueEventListener
,然后在dataSnapshot.getChildrenCount()
方法中调用onDataChange(DataSnapshot dataSnapshot)
。
但是,除此之外,您可以做的是,您可以在数据库中拥有一个单独的节点,该节点包含您需要计算其子节点的节点的子节点数的值(整数)。您可以将节点命名为Reference-ChildrenNumber
。只要在需要跟踪的引用中插入或删除数据,就可以更新此节点。然后,当您需要此数据时,您可以只读取此节点并获取计数,而不是下载参考节点的全部内容。
我建议您在transaction
中进行这些更改,以便并发写入不会导致数据不正确。此外,您可以从客户端执行此操作,但我建议您使用Cloud Functions for Firebase。您正在使用云功能寻找的确切示例是this。
答案 1 :(得分:0)
datasnapshot.getChildrenCount()
根据https://firebase.google.com/docs/reference/android/com/google/firebase/database/DataSnapshot