【问题标题】:Android Firebase filter one database based on children of other databaseAndroid Firebase 根据其他数据库的子项过滤一个数据库
【发布时间】:2019-05-11 03:13:03
【问题描述】:

我有 2 个数据库。一个是博文,另一个是关注。现在我只想从用户被我关注的博文中检索那些数据(就像我们在任何社交媒体应用程序中所做的那样)。我的博文的帖子格式为:

以及以下数据库的格式:

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

【问题讨论】:

  • 我认为您需要进行 2 次查询,首先从 BlogPost 获取 userId,然后从第二个数据库中获取 userIds 作为列表或其他内容
  • 2 个查询有效。或者你可以使用云功能创建一个rest api(有2个查询),所以你只会打开一个到android设备的端点。如果您想同时支持 android 和 iOS,更容易调用一个 API。

标签: android database firebase firebase-realtime-database android-recyclerview


【解决方案1】:

就像@AssetBekbossynov 一样,最有效的方法,我能想到的就是,做两个查询。

一个从Following 数据库中找到用户ID,然后另一个你必须在BlogPosts 数据库中循环和搜索。

我可以在这里给你一些示例代码,它可以帮助你准确地编写你的需求:

reference.orderByChild("UserId").equalTo(userIdYouWantToSearch).addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                            if(dataSnapshot.exists())
                             // do what you want
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) { // ToDo: do something for errors

                        }
                  )};

您想要做的另一个查询是Following 数据库,它可能看起来像这样:

ref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot ds : dataSnapshot.getChildren()){
                  // retrieve the userId you want
                }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.d(TAG, "onCancelled", databaseError.toException());
            }


        });

【讨论】:

  • 不用担心,很高兴为您提供帮助:)
猜你喜欢
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 2018-09-17
  • 2020-07-19
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 2019-10-12
相关资源
最近更新 更多