首页 > 解决方案 > 如何在 Firebase 实时数据库查询中获取我所有的朋友和当前用户的帖子?

问题描述

UPDATE1:我仍在研究它,但我无法解决它,也许重组数据库?我会继续思考,但如果有人有想法会很高兴听到

好吧,我正在尝试在 firebase 查询中获取所有当前用户的朋友和他自己的帖子,但我无法获得它们,我总是尝试只获得一个朋友的帖子,因为其他帖子已被覆盖。让我向您展示我的数据库 (JSON) 的结构以及我希望如何在 Android 项目 Activity 中显示帖子。

UserRef = FirebaseDatabase.getInstance().getReference().child("Users");
PostRef = FirebaseDatabase.getInstance().getReference().child("Post");

...
...
 UserRef.child(currentUserID).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot)
            {
                if(dataSnapshot.exists())
                {

                    if(dataSnapshot.hasChild("Friends")){
                        for(DataSnapshot ds : dataSnapshot.child("Friends").getChildren()){
                            friendsID = ds.getKey(); //String with friendsID
                            DisplayAllUserPosts();
                        }
                    }...
...
  private void DisplayAllUserPosts() {

        Query SortPost = PostRef.orderByChild("uid").equalTo(friendsID);

        FirebaseRecyclerOptions<Posts> options=new FirebaseRecyclerOptions.Builder<Posts>().setQuery(SortPost,Posts.class).build(); \\Posts class is just for getting data base Post nodes elements
        FirebaseRecyclerAdapter<Posts, PostsViewHolder> firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Posts, PostsViewHolder>(options) {...

我的 Firebase 实时数据库的结构如下:

{
"Post" : {
    "10-04-201918:32:09" : {
      "counter" : 0,
      "date" : "10-04-2019",
      "fullname" : "Xuban Illarramendi",
      "postimage" : "XXXX",
      "profileimage" : "XXXX",
      "status" : "",
      "time" : "18:32:09",
      "uid" : "FP1YJnlJBpfU5aSZlSAErLODWZl2"
    },
    "10-04-201921:10:06" : {
      "counter" : 0,
      "date" : "10-04-2019",
      "fullname" : "Ander Lopez",
      "postimage" : "XXXX",
      "profileimage" : "XXXX",
      "status" : "",
      "time" : "21:10:06",
      "uid" : "8wXFsw1pBRYXBVtChqY1Kqi14dy1"
    }
  },
  "Users" : {
    "8wXFsw1pBRYXBVtChqY1Kqi14dy1" : {
      "Friends" : {
        "FP1YJnlJBpfU5aSZlSAErLODWZl2" : {
          "date" : "10-04-2019"
        },
        "sWQGtchFE1fvuSIfPb42ZIWVkbU2" : {
          "date" : "10-04-2019"
        }
      },
      "country" : "Spain",
      "dob" : "none",
      "fullname" : "Ander Lopez",
      "gender" : "none",
      "profileimage" : "XXXX",
      "relationshipstatus" : "none",
      "status" : "",
      "username" : "anderlopz"
    },
    "FP1YJnlJBpfU5aSZlSAErLODWZl2" : {
      "Friends" : {
        "8wXFsw1pBRYXBVtChqY1Kqi14dy1" : {
          "date" : "10-04-2019"
        },
        "sWQGtchFE1fvuSIfPb42ZIWVkbU2" : {
          "date" : "10-04-2019"
        }
      },
      "country" : "Spain",
      "dob" : "none",
      "fullname" : "Xuban Illarramendi",
      "gender" : "none",
      "profileimage" : "XXXX",
      "relationshipstatus" : "none",
      "status" : "",
      "username" : "xuban"
    },
    "sWQGtchFE1fvuSIfPb42ZIWVkbU2" : {
      "Friends" : {
        "8wXFsw1pBRYXBVtChqY1Kqi14dy1" : {
          "date" : "10-04-2019"
        },
        "FP1YJnlJBpfU5aSZlSAErLODWZl2" : {
          "date" : "10-04-2019"
        }
      },
      "country" : "Spain",
      "dob" : "none",
      "fullname" : "Unai Lopez",
      "gender" : "none",
      "profileimage" : "XXXX",
      "relationshipstatus" : "none",
      "status" : "",
      "username" : "unailopz"
    }
  }
}

所以我真正的问题是他只显示最后一个朋友的帖子,我怎样才能在不覆盖以前的friendsID的情况下进行包含我所有friendsID的查询?

标签: javaandroidfirebasefirebase-realtime-database

解决方案


推荐阅读