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

时间:2018-12-10 08:31:51

标签: android database firebase firebase-realtime-database recycler-adapter

我有2个数据库。一种是博客文章,另一种是博客文章。现在,我只想从用户关注我的博客文章中检索那些数据(例如我们在任何社交媒体应用程序中所做的事情)。我的博客文章的发布格式为:

enter image description here

以及以下格式的数据库:

enter image description here

我们可以看到,我想从以下获取值(值是userid),并将它们与blogpost中每个帖子中的userId进行比较。如果发现它们相等,则会得到查询并在firebaserecycleradapter中使用该查询。 我知道如何使用firebaserecycleradapter。请告诉我如何获取查询。

1 个答案:

答案 0 :(得分:2)

就像@AssetBekbossynov一样,这是最有效的方法,我可以从脑海中思考两个查询。

一个从Following数据库中找到userId,然后另一个在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());
            }


        });