有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Firebase数据库如何从1引用和等于2引用中获取一些值以获取其键和值

我有如下所示的用户信息

user

我想检查commentWriterUid是否等于用户密钥中的1,以获取其信息

comment

我试过这个:

Query query = mDatabaseReference_comments.orderByChild("commentWriterUid").equalTo(FirebaseUtil.getUsersReference().getKey());

        query.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                userModel = dataSnapshot.getValue(UserModel.class);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

        mFirebaseRecyclerAdapter = new FirebaseRecyclerAdapter<CommentModel, CommentViewHolder>(CommentModel.class,
                R.layout.layout_comment,
                CommentViewHolder.class,
                mDatabaseReference_comments) {

            @Override
            protected void populateViewHolder(CommentViewHolder viewHolder, CommentModel model, int position) {

                Glide.with(PostCommentActivity.this)
                        .load(userModel.getUserImageUrl())
                        .into(viewHolder.mCircleImageView_commentWriterImage);

                viewHolder.mTextView_commentWriterName.setText(userModel.getUserName());

                viewHolder.bindToPost(PostCommentActivity.this, model);

            }

        };

但我有以下错误:

03-04 02:24:34.558 31063-31063/com.app E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.NullPointerException
    at com.app.PostCommentActivity$4.populateViewHolder(PostCommentActivity.java:119)
    at com.app.PostCommentActivity$4.populateViewHolder(PostCommentActivity.java:113)

共 (1) 个答案

  1. # 1 楼答案

    没有人回答我的问题,所以我自己想出来,回答这个问题,这样可能会对其他人有所帮助

    FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
    
            final DatabaseReference root_ref = firebaseDatabase.getReference();
    
            root_ref.child("comments").child("KeKwGa5btKuDYr3yYq5").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
    
                    String commentWriterUid = dataSnapshot.child("commentWriterUid").getValue().toString();
    
                    root_ref.child("users").equalTo(commentWriterUid).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
    
                            // Do all stuff you went
    
                        }
    
                        @Override
                        public void onCancelled(DatabaseError databaseError) {
    
                        }
                    });
                }
    
                @Override
                public void onCancelled(DatabaseError databaseError) {
    
                }
            });