Значения дочернего узла равны нулю при получении базы данных firebase - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь получить значения базы данных, но данные в узле / дочернем элементе, которые я выбрал с помощью 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()) {
                ChatMessageModel chatMessageModel = ds.getValue(ChatMessageModel.class);
                Log.d(TAG, "onDataChange: " + uidRef);
                Log.d("users:: ", chatMessageModel.getMsgContent());
                    messageList.add(chatMessageModel);
                    for (int i = 0; i < messageList.size(); i++) {
                        Log.d(TAG, "All received messages : " + messageList.get(i).getMsgContent());

                    }
                }
                chatAppMsgAdapter.notifyDataSetChanged();
                //Do what you need to do with the list.
            }

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

// и вот моя база данных
u0TddklO8BXKCRHp4UFXEvmPS1H3: null // u0TddklO8BXKCRHp4UFXEvmPS1H3 - это uid.где UID текущего пользователя.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018
  1. Прежде всего попробуйте отладить приложение, установив правило базы данных Firebase следующим образом -

    {
       "rules": {
       ".read": true,
       ".write": true
       }
    } 
    
  2. Если все же это не работает, попробуйтеделая это -

    private FirebaseDatabase database;
    private DatabaseReference databaseRef;
    
    database = FirebaseDatabase.getInstance();
    databaseRef = database.getReference("users");
    
    databaseRef.addValueEventListener(new ValueEventListener() {
         @Override
         public void onDataChange(DataSnapshot dataSnapshot) {
             for(DataSnapshot snapshot:dataSnapshot.getChildren()){
                Log.d("Output Key", snapshot.getKey());
                Log.d("Output Value", snapshot.getValue().toString());
            }
         }
         @Override
         public void onCancelled(DatabaseError databaseError) {
    
         }
    });
    
0 голосов
/ 23 сентября 2018

Предполагая, что user1 соответствует uid первого пользователя, чтобы получить все эти ChatMessageModel объекты под вашим user1 узлом, используйте следующий код:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference uidRef = rootRef.child("users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ArrayList<ChatMessageModel> messageList = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            ChatMessageModel chatMessageModel = ds.getValue(ChatMessageModel.class);
            Log.d("users:: ", chatMessageModel.getMsgContent());
            messageList.add(chatMessageModel);
        }

        //Do what you need to do with the list.
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage());
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...