Firebase получить значение из UID после неизвестного UID - PullRequest
1 голос
/ 23 июня 2019

CABARAN - неизвестный Uid. это не текст. Сейчас у меня есть UID, и я хочу получить значение для tajukPenuh.

Figure 1: Database

Это код, и я до сих пор не могу получить значение.

FirebaseDatabase.getInstance().getReference().child("karangan").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                for (DataSnapshot child : dataSnapshot.getChildren()) {

                Karangan karangan = child.child(karanganID).getValue(Karangan.class);

                if (karangan != null) {
                    String tajukPenuh = karangan.getTajukPenuh();

                    holder.getTextViewKaranganID().setText("Karangan Tajuk: " + tajukPenuh);

                }
            }

        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});

1 Ответ

2 голосов
/ 23 июня 2019

Теоретически вы могли бы сделать запрос следующим образом:

FirebaseDatabase.getInstance().getReference().child("karangan")
  .orderByChild("-LYgFIl4Xiv_Ls51Slvh/uid").equalTo("-LYgFIl4Xiv_Ls51Slvh")
  .addListenerForSingleValueEvent(new ValueEventListener() {

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

Ваша текущая структура данных позволяет легко найти все дочерние узлы для CABARAN, но не облегчает поиск CABARAN для данного дочернего узла. Чтобы этот вариант использования работал эффективно, вы должны расширить структуру данных с помощью так называемого обратного индекса, который сопоставляется с CABARAN от значения, которое вы знаете. Так что-то вроде:

"myIndex": {
  "-LYgFIl4Xiv_Ls51Slvh": "CABARAN",
  "-LzfFIl4Xasas51Slads": "CABARAN",
  "-Lasddas981398asdh1h": "CASITWO"
}

Это дополнительная структура данных, которую вы должны будете обновлять при записи остальных данных. Но с этой структурой теперь очень легко определить, что -LYgFIl4Xiv_Ls51Slvh отображается на CABARAN.

Подробнее об этом см. Мой ответ здесь: Запрос Firebase, если child of child содержит значение

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