我有一个看起来像这样的架构。我希望数据库返回一个子(post-ID)及其内容,如果favoriteBy
包含我正在寻找的UID。这可能吗?
UID由此变量定义:
private final String UID = FirebaseAuth.getInstance().getCurrentUser().getUid();
作为参考,要获取用户发布的所有用户帖子,将使用此Query
对象获取该帖子:
databaseReference.child("user-posts").child(UID).limitToFirst(100);
答案 0 :(得分:0)
Firebase不提供大量过滤工具来查询数据。因此,仅使用您当前的结构,这是不可能的。
在不改变您当前帖子结构的情况下,我建议您做的是,每当用户将帖子设置为收藏时,您还会以稍后可以轻松获取此数据的方式更新firebase数据库的另一个分支。
因此,您可以将海报所有者UID和postID保存在赞成帖子的UID下。
favoritedPosts: {
UID: { //UID you are looking for
postOwnerUID: {
postID: true
}
}
}
然后,您可以轻松获得收藏的帖子postOwnerUID
和postID
,例如:
databaseReference.child('favoritedPosts').child(UID)
上述查询将返回一个带有postOwnerUIDs
及其postIDs
的对象,最后您可以迭代此对象以使用您现在拥有的ID检索帖子内容。
databaseReference.child('user-posts').child(postOwnerUID).child(postID)