首页 > 解决方案 > Firebase 数据库子值在检索时为空

问题描述

我正在尝试检索数据库值,但我使用 uID 获取的子项中的数据为空。

在此处输入图像描述

这是我的代码-

   Intent intent = getIntent();
                        Bundle extras = intent.getExtras();
                        currentUser = extras.getString("currentUser");
                        selectedUser = extras.getString("selectedUser");
                        uID = extras.getString("uID");
                mFirebaseDatabase = FirebaseDatabase.getInstance();


            mDbReference = FirebaseDatabase.getInstance().getReference();
                final DatabaseReference uidRef = mDbReference.child("users").child(uID);

                ValueEventListener valueEventListener = new ValueEventListener() {
             @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for (DataSnapshot ds : dataSnapshot.getChildren()) {
                DataSnapshot firstChild = ds.child(ChatMessageModel.MSG_TYPE_RECEIVED);
                for (DataSnapshot secondChild : firstChild.getChildren()) {
                    ChatMessageModel chatMessageModel = secondChild.getValue(ChatMessageModel.class);
                    messageList.add(chatMessageModel);
                    for (int i = 0; i < messageList.size(); i++) {
                        Log.d(TAG, "All received messages : " + messageList.get(i).getMsgContent());

                    }
                }

            }
                            chatAppMsgAdapter.notifyDataSetChanged();
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {
                            Log.d(TAG, databaseError.getMessage());
                        }
                    };
                    uidRef.addListenerForSingleValueEvent(valueEventListener);

//这是我的数据库 u0TddklO8BXKCRHp4UFXEvmPS1H3: null //u0TddklO8BXKCRHp4UFXEvmPS1H3 是 uid。其中,uid 是当前用户的。//ans 必须是 -

  "users": {
           "User2" : {
  "MSG_TYPE_RECEIVED" : {
    "-LNEG2DhamuO6hAvZUp9" : {
      "msgContent" : "hello",
      "msgType" : "MSG_TYPE_RECEIVED"
    },
    "-LNEG8hxAcXp05g5RYly" : {
      "msgContent" : "Hi fi",
      "msgType" : "MSG_TYPE_RECEIVED"
    }
  }
}

}

标签: javaandroidfirebasefirebase-realtime-database

解决方案


从您的评论中可以理解,数据库是这样的

"users": {
           "User2" : {
  "MSG_TYPE_RECEIVED" : {
    "-LNEG2DhamuO6hAvZUp9" : {
      "msgContent" : "hello",
      "msgType" : "MSG_TYPE_RECEIVED"
    },
    "-LNEG8hxAcXp05g5RYly" : {
      "msgContent" : "Hi fi",
      "msgType" : "MSG_TYPE_RECEIVED"
    }
  }

将您的数据库更改为

"users": {
           "u0TddklO8BXKCRHp4UFXEvmPS1H3" : {
  "MSG_TYPE_RECEIVED" : {
    "-LNEG2DhamuO6hAvZUp9" : {
      "msgContent" : "hello",
      "msgType" : "MSG_TYPE_RECEIVED"
    },
    "-LNEG8hxAcXp05g5RYly" : {
      "msgContent" : "Hi fi",
      "msgType" : "MSG_TYPE_RECEIVED"
    }
  }
}
}

推荐阅读