Получение вложенных данных с помощью идентификаторов в FireBase? - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь получить сообщения от узла Message.Каждое сообщение в сообщениях имеет идентификатор.Конечный результат, которого я пытаюсь достичь, - это просто сообщение для каждого пользователя или есть лучший способ хранения данных, поскольку мне не нужен ключ для хранения сообщений, но когда я не включаю ключ, старые данные получаютудалено.

структура моих данных

 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);

                            }

1 Ответ

0 голосов
/ 10 мая 2019
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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...