我正在尝试从Message
节点检索消息。消息中的每个消息都有一个ID。我试图实现的最终结果只是为每个用户发送消息,或者有一种更好的方法来存储数据,因为我不需要存储消息的密钥,但是当我不包含密钥时,旧数据就可以得到删除。
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); }
答案 0 :(得分:0)
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?
如果您还需要密钥,只需使用:
String key = ds.getKey();