1 Firebase Kotlin Ссылка более чем на одного ребенка

вопрос создан в Wed, May 8, 2019 12:00 AM

Я использую базу данных Firebase Realtime для своего Android-приложения с использованием Kotlin.

У меня есть JSON в следующем формате.

    {
  "main1": {
    "branch1": [
      {
        "a": "Test1",
        "b": "Test2"
      },
      {
        "a": "Test3",
        "b": "Test4"
      }
    ],
    "branch2": [
      {
        "a": "Test5",
        "b": "Test6"
      },
      {
        "a": "Test7",
        "b": "Test8"
      }
    ]
  }
}

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

В настоящее время я могу заполнить только один ребенок с помощью приведенного ниже кода.

FirebaseDatabase.getInstance().getReference().child("main1").child("branch1")

Но я не могу найти запрос, чтобы получить объединенные результаты для branch1 и branch2. Также у меня может быть main2 с branch3 и branch4.

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

    
0
1 ответ                              1                         

Нет способа, которым вы можете выполнить запрос и получить все эти объекты за один раз. Однако есть обходной путь, в котором вы можете внести некоторые изменения в структуру вашей базы данных, уменьшив количество дочерних элементов. Поэтому, пожалуйста, проверьте следующую схему:

{
  "main1": {
      {
        "a": "Test1",
        "b": "Test2",
        "branch1": true
      },
      {
        "a": "Test3",
        "b": "Test4"
        "branch1": true
      },
      {
        "a": "Test5",
        "b": "Test6"
        "branch2": true
      },
      {
        "a": "Test7",
        "b": "Test8"
        "branch2": true
      }
  }
}

Если вы хотите получить все объекты, просто используйте следующую ссылку:

FirebaseDatabase.getInstance().getReference().child("main1");

Если вы хотите получить все объекты типа branch1, используйте следующий запрос:

FirebaseDatabase.getInstance().getReference().child("main1")
    .orderByChild("branch1")
    .equalTo(true);
    
0
2019-05-08 15: 48: 55Z
  1. Привет, Ашок! Вы пробовали мое решение выше? Если вы считаете, что мой ответ помог вам, рассмотрите возможность его принятия, нажав на флажок (✔️) с левой стороны под стрелками голосования. Следует изменить цвет на зеленый. Я бы оценил это. Спасибо!
    2019-05-13 16: 12: 01Z
источник размещен Вот