首页 > 解决方案 > 我应该如何在只有特定用户 ID 的回收站视图中查询帖子?

问题描述

我正在尝试使用 Firebase UI recyclerview 来显示特定用户的一系列帖子。我有一个名为 all_user_posts 的节点,其中包含每个帖子的密钥。有没有办法在键值对子项中显示仅具有特定用户 ID 的帖子?如果有人有任何想法,将不胜感激

我正在使用带有 Firebase 实时数据库最新依赖项的 Android Studio 3.2。对于同一项目中的其他 recyclerviews,我使用以下方法显示了所有帖子:

DatabaseReference postReference = FirebaseDatabase.getInstance().getReference().child("all_user_posts");
Query postQuery = postReference.orderByKey();

但是有没有办法只显示附加到 postKey 的特定用户 ID 的帖子?

private void displayAllPosts() {
    Query postQuery = postReference.orderByKey();
    FirebaseRecyclerOptions firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<Posts>().setQuery(postQuery, Posts.class).build();
    FirebaseRecyclerAdapter<Posts, PostViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Posts, PostViewHolder>(firebaseRecyclerOptions) {
        @Override
        protected void onBindViewHolder(@NonNull final PostViewHolder holder, final int position, @NonNull Posts model) {

            //post key in 'all_user_posts' node
            final String PostKey = getRef(position).getKey();
        }

        @NonNull
        @Override
        public PostViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(mContext).inflate(R.layout.layout_post, viewGroup, false);
            return new PostViewHolder(view);
        }
    };
    recyclerView.setAdapter(firebaseRecyclerAdapter);
    firebaseRecyclerAdapter.startListening();
}

标签: javaandroidfirebasefirebase-realtime-database

解决方案


由于您userId在数据库中使用,那么您可以执行以下操作:

FirebaseUser user = FirebaseUser.getInstance().getCurrentUser()
Query postQuery = postReference.orderByKey().equalTo(user.getUid());

这将只检索与userId


推荐阅读