2017-07-15 61 views
0

我一直在寻找这个相当一段时间,我还没有找到任何与我的问题有关的答案,所以在你给我的问题重复标记之前,至少要先阅读它。 首先,我刚开始使用firebase,并且只知道有关它的基本知识,我正在尝试制作一个简单的单用户(1到1)聊天应用程序。 我想获得登录数据库的用户数量。如何获取在firebase数据库中登录的用户数量(不带addValueEventListener())?

我有一个孩子到有谁已登录的用户的列表中我的数据库称为用户的根目录。 i have a child to the root of my database called users which have the list of the users who have logged in. 我知道的datashot.getchildrencount(),但是当一些更新/事件发生这样的作品,但我希望它给我的用户数量,只要我想,不仅在某些事件(例如在信使号码的当前活动用户连续显示,我不想活跃用户寿,我只想总登录用户)。 我想到了另一种叫做NumberofUsers的孩子的方法,所以我存储了那里的用户数量,但是firebase不允许getvalue的孩子,只设置值(它确实允许获得价值,但只在某些事件)。任何想法我该怎么办?

UPDATE 我想到了另一种方式来做到这一点,但它不是做什么工作的,但我认为解决它比解决我原来的问题的另一种方法的思考更容易。 所以我用“02”键和随机值做了NumberofUsers的另一个孩子。现在每次我想要“01”的数据时,在为“NumberofUsers”启用addChildEventListener之后,我更改值“02”。这样做的代码。 Code that does this给我的错误。 Error its giving me。新数据库。 new database 显然我不能使用datasnapshot访问子数据,任何解决方案? 任何想法如何解决这两者之一? 谢谢。

+0

如果不附加侦听器,则无法从Firebase数据库读取数据。但是当你附加一个监听器时,它会触发当前的数据。我建议你尝试附加一个听众,看看是否给你你想要的结果。如果没有,请在这里回复代码,我们将会有更好的帮助。 –

+0

正如你在本文的评论中提到的[链接](https://stackoverflow.com/questions/38279329/how-firebase-listener-actually-work)监听器只适用于数据库更新。是的,我确实希望它也听,但后来,在开始时,我想告诉用户有多少其他用户登录。为此,不会有任何事件让听众接受。我的问题与这个问题有些相关,但它也没有回答。 [链接](https://stackoverflow.com/questions/40184797/retrieve-data-from-firebase-database-on-button-click)。你想让我发布哪部分代码? – Umer

+0

我知道你不能直接从数据库读取数据,但仍然有任何方法你知道吗?我只想获取数据,(为其添加1并在新帐户的情况下将其设置为新值)... – Umer

回答

0

不幸的是,您无法从Firebase数据库读取数据而无需附加侦听器。关于Firebase,一切都与听众有关。在你的情况下,我认为你想要一个回调被调用一次,然后立即删除。如果是这样,我使用addListenerForSingleValueEvent()方法重温你的方法来简化这种情况。它触发一次,然后不再触发。

这对于只需要加载一次而且预计不会频繁更改或需要主动侦听的数据很有用。

希望它有帮助。

相关问题