Проблема с извлечением данных из базы данных Firebase - Android - PullRequest
0 голосов
/ 26 февраля 2020

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

Сначала взгляните на мою структуру набора данных: Json добавлено ниже:

"Places" : {
"-M11-OIIHbKTVqCJ-Swv" : {
  "name" : "Farmacia Pagani Dr. Roberto",
  "others" : {
    "01" : {
      "Nome" : "Ambilify",
      "Price" : 100
    },
    "02" : {
      "Nome" : "Acetaminophoen",
      "Price" : 120
    }
  }
},
"-M11-OJJCGAPdJUknLXX" : {
  "name" : "FARMACIA DR. TUMIATTI MARIANO",
  "others" : {
    "01" : {
      "Nome" : "Ambilify",
      "Price" : 100
    },
    "02" : {
      "Nome" : "Acetaminophen",
      "Price" : 120
    }
  }
}
},

Итак, что я хочу: так как у меня есть ключ "-M11-OIIHbKTVqCJ-Swv" Я хочу выполнить поиск внутри объекта с помощью этого ключа. Для этого мне нужно получить доступ к объекту Places / key (-M11-OIIHbKTVqCJ-Swv) / др., А затем выполнить поиск по номеру (означает имя по-итальянски). Я хочу вернуть Nome: Ambilify Цена: 100

Вот что я сделал:

 private void firebaseUserSearch(String searchText) {
    DatabaseReference  searchforData = FirebaseDatabase.getInstance().getReference("Places");

    Toast.makeText(FirebaseSearch.this, "Started Search", Toast.LENGTH_LONG).show();
    System.out.println("keyNameOfFarmacy"+keyNameOfFarmacy);
    Query firebaseSearchQuery = searchforData.orderByChild(keyNameOfFarmacy).orderByChild("others").orderByChild("Nome").startAt(searchText).endAt(searchText + "\uf8ff");
    FirebaseRecyclerAdapter<DataDetails, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<DataDetails, UsersViewHolder>(
            DataDetails.class,
            R.layout.list_layout,
            UsersViewHolder.class,
            firebaseSearchQuery
    ) {
        @Override
        protected void populateViewHolder(UsersViewHolder viewHolder, DataDetails model, int i) {
            viewHolder.getDetails(model.getNome(), model.getPrice());
            viewHolder.setDetails(model.getNome(), model.getPrice());
        }

    };
    mResultList.setAdapter(firebaseRecyclerAdapter);
}

У меня проблема с этой частью кода, потому что: orderByChild можно использовать только один раз.

Может кто-нибудь сказать мне, как я могу получить данные, пожалуйста, я потерял последние 2 3 часа в поисках, как это сделать, и я ничего не нашел. Заранее спасибо.

1 Ответ

1 голос
/ 27 февраля 2020

Измените это:

    Query firebaseSearchQuery = searchforData.orderByChild(keyNameOfFarmacy).orderByChild("others").orderByChild("Nome").startAt(searchText).endAt(searchText + "\uf8ff");

на это:

    Query firebaseSearchQuery = searchforData.child(keyNameOfFarmacy).child("others").orderByChild("Nome").startAt(searchText).endAt(searchText + "\uf8ff");

У вас уже есть доступ к others и к key, поэтому просто используйте child для этого и orderByChild для Nome.

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