Android 如果子数据库的内容包含某些内容,如何查询该数据库以获取该子数据库?

Android 如果子数据库的内容包含某些内容,如何查询该数据库以获取该子数据库?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有一个这样的模式。如果favoriteBy包含我要查找的UID,我希望数据库返回一个子项(post ID)及其内容。这可能吗 UID由以下变量定义: private final String UID = FirebaseAuth.getInstance().getCurrentUser().getUid(); 作为参考,若要获取用户发布的所有用户帖子,将使用此查询对象获取该帖子: databaseReference.child("user-posts").child(UID).limitT

我有一个这样的模式。如果
favoriteBy
包含我要查找的UID,我希望数据库返回一个子项(post ID)及其内容。这可能吗

UID由以下变量定义:

private final String UID = FirebaseAuth.getInstance().getCurrentUser().getUid();
作为参考,若要获取用户发布的所有用户帖子,将使用此
查询
对象获取该帖子:

databaseReference.child("user-posts").child(UID).limitToFirst(100);

Firebase不提供很多用于查询数据的过滤工具。因此,仅使用当前结构是不可能的


在不改变您当前的帖子结构的情况下,我建议您做的是,每当用户将帖子设置为收藏夹时,您也会更新firebase数据库的另一个分支,这样您以后就可以轻松获得这些数据

因此,您可以将海报的ownerUID和postID保存在发布fav的UID下

favoritedPosts: {
    UID: { //UID you are looking for
        postOwnerUID: {
            postID: true
        }
     }
}
这样,您就可以很容易地获得受欢迎的帖子
postOwnerUID
postID
,如下所示:

databaseReference.child('favoritedPosts').child(UID)
上面的查询将返回一个带有
postOwnerUIDs
及其
postID
的对象,然后最后您可以迭代此对象,以使用您现在拥有的ID检索posts内容

databaseReference.child('user-posts').child(postOwnerUID).child(postID)

我认为当前的模式不允许这样做。为了澄清,您说的是这一行:
databaseReference.child('favoritedPosts')。child(UID)
应另存为
ownerUID
?@btramisetty否这是拥有该帖子的用户的UID。如果我完全理解的话,你图像中的内在uid。您在
/user posts/uid
上拥有的第一个Id是写文章的用户的uid(
postOwnerUID
)。然后,
.limitToFirst(100)
命令中的内部UID是喜欢帖子的用户(
/favoritedPosts/UID
)。我将
favoritedBy->UIDs
保存在一个单独的树中,该树的结构也是:
postID->[post属性包括favoriteBy->UIDs]