【发布时间】:2018-05-01 10:10:36
【问题描述】:
如果添加或删除新项目等,Firebase 实时数据库似乎会通知我。这很好,但是如何获取我之前收到通知的所有现有项目?
例如,假设我的应用正在列出数据库中的项目。我第一次启动了我的应用程序。然后创建了“item 1”和“item 2”。 Firebase 通知我“项目 1”和“项目 2”,因此我将它们添加到我的应用列表中。
现在,我的应用程序已关闭并重新启动。如果创建了新项目“项目 3”,我会收到通知,但如何再次检索“项目 1”和“项目 2”?简而言之,我想再次显示所有项目。
我已经搜索了示例,但我能找到的所有示例都是获取事件,而不是“阅读所有”。
PS:我认为你们两个花时间解释。我误解了 Firebase 实时数据库的工作原理;我以为我只会在会话中收到一次新项目的通知。似乎addChildEventListener 只能通知我有新项目,我可以通过addValueEventListener 及其dataSnapshot 访问整个项目。
【问题讨论】:
-
我仍然认为你把他们弄糊涂了。 addValueEventListener 会在每次数据更改时通知您,而 addListenerForSingleValueEvent 只会通知您一次,但是您在其中获得的 DataSnapshot 取决于您附加到的查询。
-
例如,如果你将 FirebaseDatabase.getInstance().getReference(key).orderByKey().limitToLast(1) 添加到它们,addValueEventListener 会传递给你一个按键排序的最后一个项目的快照,每次将新元素添加到节点时,addListenerForSingleValueEvent 都会通知您相同但仅一次。这并不一定意味着您获得的 dataSnapshot 是最后添加的项目,而是您在查询中提到的按键排序的最后一个项目。
标签: android firebase firebase-realtime-database