Как использовать Firebase Query для данных с анонимными ключами - PullRequest
0 голосов
/ 18 октября 2018

У меня есть следующие данные базы данных, которые я намерен отобразить в ListView с помощью FirebaseListAdapter enter image description here

Моя проблема заключается в создании запроса, поскольку дочерние элементы после даты являются анонимными.Вот код запроса

 Query query = FirebaseDatabase.getInstance().getReference().child("Updates").child(refMail).child(day)
            .orderByKey();

refMail, а день - это адрес электронной почты пользователя и дата соответственно.

Здесь также мой класс модели данных

public class NotesDataModel {

private String Note;
private String uid;
private String time;

public NotesDataModel(){

}

public NotesDataModel(String Note, String uid, String time){
    this.Note=Note;
    this.uid=uid;
    this.time=time;
}

public String getNote() {
    return Note;
}

public void setNote(String note) {
    Note = note;
}

public String getUid() {
    return uid;
}

public void setUid(String uid) {
    this.uid = uid;
}

public String getTime() {
    return time;
}

public void setTime(String time) {
    this.time = time;
}}

и, наконец,инициализация адаптера

 FirebaseListOptions<NotesDataModel> options = new FirebaseListOptions.Builder<NotesDataModel>()
            .setQuery(query, NotesDataModel.class)
            .setLayout(R.layout.notes_cell_layout)
            .build();

    mAdapter = new FirebaseListAdapter<NotesDataModel>(options) {
        @Override
        protected void populateView(View view, NotesDataModel note, int position) { //some code }}; notesList.setAdapter(mAdapter);

Предыдущая версия работала так

ref = FirebaseDatabase.getInstance().getReferenceFromUrl(FactoryDaftari.firebaseURL + "Updates/" + refMail + "/" + day);

И инициализация адаптера

mAdapter = new FirebaseListAdapter<NotesDataModel>(this, NotesDataModel.class, R.layout.notes_cell_layout, ref) {

        @Override
        protected void populateView(View view, NotesDataModel note, int position) { }};

1 Ответ

0 голосов
/ 18 октября 2018

Вы не сможете выполнить этот запрос в соответствии со структурой ваших данных.В базах данных NoSQL принято делать копии данных, структурированных для специальных запросов.Итак, если вы хотите запросить список заметок, вам понадобится структура, в которой все заметки являются дочерними элементами одного и того же родителя, а затем выполните запрос к этой структуре.

(Кроме того, организация заметок поузел с датой, как у вас сейчас, может даже не быть лучшей общей структурой.)

...