Android Firebase根据其他数据库的子数据库过滤一个数据库

Android Firebase根据其他数据库的子数据库过滤一个数据库,android,database,firebase,firebase-realtime-database,android-recyclerview,Android,Database,Firebase,Firebase Realtime Database,Android Recyclerview,我有两个数据库。一个是blogpost,另一个是follow。现在我只想从博客帖子中检索那些被我跟踪的用户的数据(就像我们在任何社交媒体应用程序中所做的那样)。我的博客帖子的格式如下: 以及以下格式的数据库: 正如我们所看到的,我想从下面得到值(值是userId),并将它们与blogpost中每篇文章中的userId进行比较。如果我发现它们相等,我会得到查询并在firebaserecycleradapter中使用它。 我知道如何使用firebaserecycleradapter。请告诉我如何

我有两个数据库。一个是blogpost,另一个是follow。现在我只想从博客帖子中检索那些被我跟踪的用户的数据(就像我们在任何社交媒体应用程序中所做的那样)。我的博客帖子的格式如下:

以及以下格式的数据库:

正如我们所看到的,我想从下面得到值(值是userId),并将它们与blogpost中每篇文章中的userId进行比较。如果我发现它们相等,我会得到查询并在firebaserecycleradapter中使用它。
我知道如何使用firebaserecycleradapter。请告诉我如何获得查询。

正如@AssetBekbossynov一样,最有效的方法是,我可以从我的头脑中思考,那就是,做两个查询

一个是从下面的
数据库中查找用户ID,另一个是在
BlogPosts
数据库中循环和搜索时必须执行的操作

我可以在这里为您提供一些示例代码,这些代码可能有助于您准确地编码您的需求:

reference.orderByChild(“UserId”).equalTo(userIdYouWantToSearch).addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.exists())
//做你想做的
}
@凌驾
public void onCancelled(@NonNull-DatabaseError-DatabaseError){//ToDo:对错误采取措施
}
)};
您要执行的另一个查询是针对以下数据库的
,该数据库可能如下所示:

ref.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
//检索所需的用户标识
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
d(标记“onCancelled”,databaseError.toException());
}
});

正如@AssetBekbossynov,最有效的方法,我可以从我的头脑中思考,那就是,做两个查询

一个是从下面的
数据库中查找用户ID,另一个是在
BlogPosts
数据库中循环和搜索时必须执行的操作

我可以在这里为您提供一些示例代码,这些代码可能有助于您准确地编码您的需求:

reference.orderByChild(“UserId”).equalTo(userIdYouWantToSearch).addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.exists())
//做你想做的
}
@凌驾
public void onCancelled(@NonNull-DatabaseError-DatabaseError){//ToDo:对错误采取措施
}
)};
您要执行的另一个查询是针对以下数据库的
,该数据库可能如下所示:

ref.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
//检索所需的用户标识
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
d(标记“onCancelled”,databaseError.toException());
}
});

我认为您需要执行2个查询,首先从BlogPost获取用户ID,然后从第二个数据库获取用户ID,作为列表或其他查询。或者您可以使用云函数创建一个RESTAPI(带有2个查询),因此您将只打开android设备的一个端点。如果你想同时支持android和iOS,调用一个API就更容易了。我认为你需要做两个查询,首先从BlogPost获取用户ID,然后从第二个数据库获取用户ID,作为列表或其他查询工作。或者您可以使用云函数创建一个RESTAPI(带有2个查询),因此您将只打开android设备的一个端点。如果你想同时支持android和iOS,调用一个API更容易。不用担心,很乐意帮助:)不用担心,很乐意帮助:)