Обойти узел push-id в firebase - PullRequest
0 голосов
/ 08 мая 2018

Я получаю нулевое значение, когда пытаюсь получить данные дочернего узла push-идентификатора. Моя структура выглядит так enter image description here И это мой код для получения данных сообщения

DatabaseReference mMessageDatabase = FirebaseDatabase.getInstance().getReference().child("private_messages");
mMessageDatabase.child(User1).child(User2).addListenerForSingleValueEvent(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot != null) {

                // getting null in message
                String message = dataSnapshot.child("message").getValue(String.class);
                Log.e(TAG, "CHAT_LOG: " + message);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Что-то не так в моем коде или я там пропускаю код?

EDIT:

Я пытаюсь использовать запрос, чтобы проверить, дает ли он мне данные. вот мой код

        messageDatabase.orderByChild("seen").equalTo("false")
                .addListenerForSingleValueEvent(new ValueEventListener() {

                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        if (dataSnapshot.exists()) {
                            for (DataSnapshot datas : dataSnapshot.getChildren()) {
                                String key = datas.getKey();
                                String seen = dataSnapshot.child(key).child("seen").getValue(String.class);
                                Log.e(TAG, "CHAT_LOG: Seen= " + seen);
                            }
                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

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

1 Ответ

0 голосов
/ 08 мая 2018

Попробуйте следующее:

 mMessageDatabase.child(User1).child(User2).addListenerForSingleValueEvent(new ValueEventListener() {

    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot != null) {
           for(DataSnapshot datas: dataSnapshot.getChildren()){

            String message = datas.child("message").getValue(String.class);
            Log.e(TAG, "CHAT_LOG: " + message);
           }
        }
    }

Так как моментальный снимок находится в User2, вы можете зациклить внутри прямого потомка, который является идентификатором push, и получить значение child message

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...