我正在尝试从 Message
节点检索消息。 messages 中的每条消息都有一个 Id。我试图实现的最终结果只是每个用户的消息,或者是否有更好的方法来存储数据,因为我不需要存储消息的 key ,但是当我不包含旧数据的 key 时已删除。
DatabaseReference dbfriends= FirebaseDatabase.getInstance().getReference().child("Users"); dbfriends.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if(dataSnapshot.exists()) { for (DataSnapshot productSnapshot:dataSnapshot.getChildren()) { Log.i("IDDD",productSnapshot.toString()); Log.i("IDDDDDDDD",productSnapshot.child("Messages").getValue().toString()); String friend=productSnapshot.child("Username").getValue().toString(); Log.i("This is friend",friend.toString()); friends.add(friend); }
最佳答案
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference messagesRef = rootRef.child("Users").child(uid).child("Messages");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String sender = ds.child("sender").getValue(String.class);
String message = ds.child("message").getValue(String.class);
Log.d(TAG, sender + ": " + message);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
messagesRef.addListenerForSingleValueEvent(valueEventListener);
logcat 中的结果将是:
Jeffy: Alic how r you?
Jeffy: Alic how r you?
如果您还需要 key ,只需使用:
String key = ds.getKey();
关于java - 在 firebase 中使用 ids 检索嵌套数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56066417/