Ключ datasnapshot появляется, когда данные значения становятся нулевыми - PullRequest
0 голосов
/ 08 мая 2019

Когда я пытаюсь получить снимки данных с firebase. Я не получаю данные должным образом. Ключ на самом деле в стоимости.

   DatabaseReference mmmmref = FirebaseDatabase.getInstance().getReference("MessageRooms")
                                    .child(id).child("messages");
mmmmref.addListenerForSingleValueEvent(new ValueEventListener() {

Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

     String ms =  dataSnapshot.getValue(message.class).getText();
}


так что я получаю ноль.

Мой DataSnapshot выглядит так в logd

{ key = messages, 
value = {-LeNVOFh_Bo6g7Z69Ibq=
           {text=zzzz, date=19-05-08 22:33:09, type=text}
         } 
}

Ключ должен был быть таким: LeNVOFh_Bo6g7Z69Ibq вместо сообщений

Мне нужен ответ, который может работать для списка сообщений. Код для вставки в дБ

String RoomKey = mref.child("MessageRooms").push().getKey();
chatroomref =  mref.child("MessageRooms").child(RoomKey);
chatroomref.child("creator").setValue(FirebaseAuth.getInstance().getUid());
chatroomref.child("member").setValue(userids);
roommesssageRef = chatroomref.child("messages");

message message = new message();
message.setDate(Mfirebase.getTimeStamp());
message.setText("zzzz");
message.setType("text");

roommesssageRef.push().setValue(message);

Сообщение модели класса

public class message {

    String text;
    String type;
    String date;

    public message() {
    }

    public message(String text, String type, String date) {
        this.text = text;
        this.type = type;
        this.date = date;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}

База данных

enter image description here

1 Ответ

1 голос
/ 08 мая 2019

Если ваш message.class имеет типы, соответствующие вашим типам в базе данных Firebase, единственной проблемой, с которой вы столкнулись, является ссылка.

Вам нужно пойти на один уровень глубже

DatabaseReference    ref = chatroomref.child("messages").child("-LeNVOFh_Bo6g7Z69lbq");

Если вы зацикливаетесь на getChildren(), пожалуйста, проверьте ваш message.class, чтобы он совпадал с теми же именами и типами переменных, что и в Firebase.

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