java - 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"
}
}
}
}
解决方案
从您的评论中可以理解,数据库是这样的
"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"
}
}
}
}
推荐阅读
- json - 如何使用 Kotlin 迭代 JSON 对象内的列表
- swift - UISplitViewController 自动“切换”到详细视图控制器
- ios - 如何下载 Airwatch iOS SDK?
- sql-server - 我可以使用元数据来验证主键和外键值是否有效?
- r - 处理表示输出中的错误消息
- visual-studio-code - 如何使用 eslint 正确设置流程?
- javascript - 如果在php和javascript的帮助下提交为空白,如何更改输入文本颜色?
- slideshow - UIkit 3x Slideshow 图片大小为0
- java - Android Firebase Recyclerview - 如何取消选择以前选择的项目?
- r - 用不同的梯度覆盖多个 geom_raster 图