Как я могу получить имя узла в firebase?

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

Как я могу получить имя узла в firebase?

 "menu" : {
    "Steak taco" : {
      "Description" : "Roasted steak with chipotle sauce taco.",
      "Price" : 5
    }
  }

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

 DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
        final DatabaseReference refNom = ref.child("Locales");

final DatabaseReference refNom = ref.child("Locales");
            refNom.orderByChild("Nombre").equalTo(nombreLocal/*i'm getting this from a getExtra*/).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    lista.removeAll(lista);
    for (DataSnapshot ds1 : dataSnapshot.getChildren()) {

    String nomPlatillo = ds1.child("menu").getKey();
    String descPlatillo = ds1.child("menu")./*dish_name.child*/child("Description").getValue(String.class);
    double precio = ds1.child("menu")./*dish_name.child*/child("price").getValue(double.class);
    datosMenu menu = new datosMenu(nomPlatillo,descPlatillo,precio);
    lista.add(menu);
}

Это мой цикл:

Расскажите, пожалуйста, как получить dataSnapshot из базы данных, поскольку от этого зависит правильное решение.

Frank van Puffelen 26.05.2018 06:16

Теперь это откровенно отредактировано

Eduardo Moreno 26.05.2018 06:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
264
2

Ответы 2

Поскольку в меню будет много элементов, я думаю, было бы лучше, если бы вы могли создать подобный массив элементов

{
  "menu": [
    {
      "item": "Steak taco",
      "desc": "",
      "price": "5",
      "image_url": ""
    },{
      "item": "pizza",
      "desc": "",
      "price": "4",
      "image_url": ""
    }
  ]
}

Таким образом, будет легко выполнять итеративный синтаксический анализ.

Вы скучаете по ребенку. Между вашим узлом menu и ключом Description есть еще один шаг в древовидной иерархии, Steak taco. Чтобы решить эту проблему, измените следующие строки кода:

String descPlatillo = ds1.child("menu")./*dish_name.child*/child("Description").getValue(String.class);
double precio = ds1.child("menu")./*dish_name.child*/child("price").getValue(double.class);

к

String descPlatillo = ds1.child("menu").child("Steak taco").getValue(String.class);
double precio = ds1.child("menu").child("Steak taco").getValue(Double.class);

Также обратите внимание, что использовался getValue(Double.class), а не getValue(double.class).

я знаю это, но имя этого ребенка будет другим, потому что я буду ставить разные блюда, и имя будет изменено, поэтому я хочу получить имя этого узла (в этом примере Taco Steak) с их соответствующими описание и цена ..

Eduardo Moreno 26.05.2018 16:59

В этом случае вам следует использовать .child(yourVariable) вместо .child("Steak taco"). В котором yourVariable содержит все, что вам нужно для создания ссылки. Вы не можете оставить его пустым.

Alex Mamo 26.05.2018 17:02

Да, но приложение не знает названий блюд, поэтому я не могу создать переменную для каждого названия блюда, я хочу получить имя этого блюда / узла динамически, потому что имена будут будь другим

Eduardo Moreno 26.05.2018 17:16

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

Alex Mamo 27.05.2018 08:45

Все в порядке? Вы решили проблему?

Alex Mamo 28.05.2018 05:27

ну, приложение это просто для презентации, поэтому я создал предопределенные объекты для размещения в меню, я не мог придумать, как получить данные из firebase.

Eduardo Moreno 28.05.2018 06:46

Другие вопросы по теме