【发布时间】:2018-04-11 13:20:56
【问题描述】:
我有一个用户帖子表,与此处的 Firebase 文档中描述的完全一样: https://firebase.google.com/docs/database/web/read-and-write#update_specific_fields
//From docs
var updates = {};
//I'm not actually doing this
updates['/posts/' + newPostKey] = postData;
//I'm doing this
updates['/user-posts/' + uid + '/' + newPostKey] = postData;
return firebase.database().ref().update(updates);
我还有一个包含“朋友 ID”列表的用户表:
"users": {
"USER-ID-1": {
...
"friends": [
"FRIEND-ID-1",
"FRIEND-ID-2"
]
}
}
我想知道如何从 ID 位于当前用户的朋友数组中的“用户帖子”中获取所有对象?
这在文档中没有描述,如果他们以它为例,我猜它是正确的数据模型......? 我还没有找到任何关于如何从基于多个 ID 的表中获取所有实例的示例。
所以:如何从 FRIEND-ID-1 和 FRIEND-ID-2 获取所有用户帖子作为一个列表返回,我可以循环并在视图中显示。
这可能吗?如果没有,如何实现?
感谢大家的帮助! :)
【问题讨论】:
-
查询 Firebase 是一件很痛苦的事,尤其是在您不扁平化数据库的情况下。例如。如果您有带有字段的帖子 - Type(类型选项为
A和B)和 Length(长度选项为long和short)并且您想要获取所有类型为 A 且长度为 long 的帖子,您应该创建另一个数据行,就像您现在拥有的Posts。它可以命名为 Posts_A_Long。因此,每次您创建类型为 A 且长度为 long 的帖子时,您也会将其添加到此表中。 firebase.google.com/docs/database/web/… -
我怎样才能正确地展平我的示例以便能够获取正确的数据呢?我是否需要为用户和朋友的每个组合设置一个表?好像太多了……
-
FRIEND-ID-1是它的uid?如果是这样,您可以一一查询他们的帖子并在客户端进行聚合,因为 Firebase 不支持服务器端的聚合。可能更好的方法是将 Firebase 的 Promise 转换为 Rxjs 的 Observables 并根据需要合并它们。 -
我希望你不会那样说...好吧,那我试试。问题是我不能直接收听该列表上的更改。
标签: angular firebase firebase-realtime-database nosql