当前位置: 首页 > 知识库问答 >
问题:

如何使用Firebase实时数据库创建一个特定用户保存的所有帖子的列表?

仲孙铭
2023-03-14
FirebaseDatabase.getInstance().getReference()
            .child("Posts")
            .child("saves")
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    mySavedPosts.clear();
                    if (snapshot.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).exists()){
                        for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                            Post post = dataSnapshot.getValue(Post.class);
                            mySavedPosts.add(post);
                        }
                    }
                    Collections.reverse(mySavedPosts);
                    postAdapterSaves.notifyDataSetChanged();
                }

                @Override
                public void onCancelled(@NonNull DatabaseError error) {

                }
            });

共有1个答案

方野
2023-03-14

根据你的评论:

我只需要看看auth.getuid()是否在“saves”的子项中。

要检查经过身份验证的用户的UID是否存在于“保存”节点中,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference postsRef = rootRef.child("Posts");
Query query = postsRef.orderByChild("saves/" + uid).equalTo(true);
query.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            for (DataSnapshot postSnapshot : task.getResult().getChildren()) {
                Post post = postSnapshot.getValue(Post.class);
                mySavedPosts.add(post);
            }
            Collections.reverse(mySavedPosts);
            postAdapterSaves.notifyDataSetChanged();
        } else {
            Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});
 类似资料:
  • 问题内容: 目前,我一直在研究FireBase,并且一直在使用AngularJS插件,并且发现了以下我无法解决的问题。 我目前已经实现了简单的登录系统。注册后使用我的邮件和密码登录,我创建了这样的帖子: 从这一点来看,一切都很好。现在,我想做的是在firebase上的posts / endpoint中,我只想显示当前登录用户的帖子。 其他用户可以通过使用公共布尔变量来阅读其他人的信息(但这将在以后

  • 当我试图检索recycleview中保存的数据时,它们显示的是所有用户的数据,而不是登录的用户。有人能帮忙吗?

  • 我正在尝试删除 Firebase 实时数据库中用户之间的消息。我能够成功删除消息,但我想添加一个条件,即用户无法删除他收到的消息,只能删除他发送的消息,目前用户能够删除他收到的消息以及他从firebase实时数据库中发送的消息。 我的代码 MessageActivity.java MessageAdapter.java 聊天.java

  • 我想问如何创建两个单独的登录意图。例如,一个是给客户的,一个是给管理员检查细节的。 在这段代码中,它只能显示客户部分,但我如何输入另一种方式,在那里有单独的管理或管理和客户的使用? 更新的一个

  • 我需要一些与Firebase实时数据库请求的帮助。 我想实现一些类似搜索屏幕,将显示所有用户,但我有一个问题,从Firebase检索数据。 下面是向Firebase发送请求的方法。 和检索用户计数。 有人能解释我该怎么办?

  • 我已经创建了这个数据库,在这里输入图像描述,并希望显示专门针对子可用性的列表:“可用”项。通过这段代码,我几乎达到了目标 但是面临这样一个问题: 在此处输入图像描述如何消除此问题?非常感谢。