【问题标题】:How to count the number of Snapshots that a Reference has?如何计算引用的快照数量?
【发布时间】:2017-12-18 17:51:41
【问题描述】:

我想知道如何在 Firebase 中计算引用在其中的快照数量,所以下一个示例我可以得到 5 的值。

 

    -TheReference
        -KoiWSAUZvT4RlBui4TY
        -KojK1uz0go1beOKPVtP
        -KooR3HzDcrGPq068t7T
        -KowcGAukSnUy5hjTUf5
        -KowtzW0SQYvbX87FAXN

我只想在应用启动时计数,而不是在每次数据库更改时计数,所以我不打算在引用上使用 ValueEventListener 或 SingleValueEventListener。

这可能吗?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    要计算引用的子项数量,您必须添加一个ValueEventListener,然后在onDataChange(DataSnapshot dataSnapshot) 方法中调用dataSnapshot.getChildrenCount()

    但是,除此之外,您可以做的是,您可以在数据库中拥有一个单独的节点,其中包含您需要对其子节点进行计数的节点的子节点数量的值(整数)。您可以将节点命名为 Reference-ChildrenNumber。每当从您需要跟踪的引用中插入或删除数据时,您都可以更新此节点。然后,当您需要此数据时,无需下载引用节点的全部内容,只需读取此节点并获取计数即可。

    我建议您在transaction 中进行这些更改,以便并发写入不会导致不正确的数据。此外,您可以从客户端执行此操作,但我建议您使用 Cloud Functions for Firebase。 this 是您正在寻找的使用 Cloud Functions 的确切示例。

    【讨论】:

    • 那很好,但新参考中的数据请求将是相同的,咨询 addValueEventListener 或 addSingleValueEventListener 不是吗?我正在寻找可以咨询一次的东西。
    • 如何在不访问数据库的情况下从数据库中读取数据?
    • addSingleValueEventListener 只检索一次数据。不会下载对节点的后续更改。因此是“单身”。
    【解决方案2】:
    猜你喜欢
    • 2017-11-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多