【发布时间】:2016-11-03 17:31:45
【问题描述】:
加入扁平化数据是一个常见用例,也在documentation 中进行了描述。但是文档显示了一个简单的示例,它不是实时的,它不会对更改做出反应。我正在寻找更强大的实现。我认为 RxJava 非常适合这个。
考虑以下 Firebase 结构:
{
"messages": {
"group_id_1": {
"message_id_1": {
"text": "Hello",
"author": "uid_1"
}
}
},
"users": {
"uid_1": {
"name": "David"
}
},
"rooms": {
"room_id_1": {
"name": "General",
"members": {
"uid_1": true
}
}
}
}
我在这里看到两个用例:
- 获取组中带有作者姓名的消息列表
- 我想我会得到
Observable<Message>,当我订阅它时,依赖项(这些消息的用户)也会在一些缓存中被订阅。当我显示消息时,我可以从缓存中获取作者的姓名。 - 它也是实时的 - 如果作者姓名更改,可观察对象会发出更改的消息。
- 当我取消订阅 observable 时,依赖项也会取消订阅。
- 我想我会得到
- 获取房间成员列表及其姓名
- 我想我会收到
Observable<User>,当我订阅它时,它会先订阅房间的成员,然后再订阅个人用户。 - 它是实时的 - 如果房间成员发生变化,我会收到通知。
- 当我取消订阅 observable 时,依赖项也会取消订阅。
- 我想我会收到
您知道可以做到这一点的库/解决方案吗?
如果我创建了一个,你会使用它吗?
【问题讨论】:
-
“要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,描述问题以及迄今为止为解决该问题所做的工作。”但我很确定人们(当然是我)会很乐意看到你创造一个。 :-)
-
如果您使用的是 Rx Java,我建议您检查 RxFirebase 库 github.com/nmoskalenko/RxFirebase 。另一方面,如果您使用的是 RxJava 2,则需要检查 github.com/FrangSierra/Rx2Firebase。我也借此机会感谢@FrankvanPuffelen 的工作!您在很多关于 Firebase 的帖子中的所有回复都帮助我了解并在我的许多应用程序中使用 Firebase!
标签: firebase rx-java firebase-realtime-database