React Native: создайте собственный дочерний узел в базе данных Firebase в реальном времени

Поскольку я новичок в firebase и React, я ценю вашу помощь, так как перепробовал почти все.

Ниже приведена моя структура данных в firebase.

React Native: создайте собственный дочерний узел в базе данных Firebase в реальном времени

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

"Id" : 1,
"Milk" : {
  "Id" : 2,
  "Imported Milks" : {
    "Frosted Milk" : 20,
    "Milk Up" : 10
  },
  "Local Milks" : {
    "Cow Power" : 5,
    "Milk Man" : 3
  }
}

следующий мой код:

       let product = "Milk";
       const dbUpdate = await firebase.database().ref("Products");
       //this.state.selectedCategory is Milk
       await dbUpdate.child(this.state.selectedCategory).set(
            {
             product:
                    {
                        Id: item.Id,
                        "Imported Milks": {
                                "Frosted Milk": 20,
                                "Milk Up" : 10
                            }                               
                    }
            }
        );

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

       let product = "Milk";
       const dbUpdate = await firebase.database().ref("Products");
       //this.state.selectedCategory is Milk
       await dbUpdate.set(
            {
             this.state.selectedCategory:{
                    product:
                    {
                        Id: item.Id,
                        "Imported Milks": {
                                "Frosted Milk": 20,
                                "Milk Up" : 10
                            }                               
                    }
                }
            }
        );

Спасибо

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

firebase.database().ref("Products/Beverages/Beers").child("Lagunitas").set(1);

Итак, важно здесь то, что мы не вызываем push (который сгенерировал бы идентификатор), а вместо этого указываем свой собственный ключ (в вызове child() в данном случае).


Если вы хотите установить весь объект JSON, это будет:

firebase.database().ref("Products").set({
  Beverages: {
    Beers: {
      Id: 1,
      "Imported Beers": {
        Bella: 20,
        LoveBug: 5
      }
    }
  }
})

Если вы хотите использовать значение вашей переменной product в пути к Обновить пути в базе данных, вы можете сделать:

let product = "Milk";
const dbUpdate = await firebase.database().ref("Products");
                                                // ?
await dbUpdate.child(this.state.selectedCategory).update({
  [product]: // ? Use [] to use the value of the variable
     {
         Id: item.Id,
         "Imported Milks": {
                 "Frosted Milk": 20,
                 "Milk Up" : 10
             }                               
     }
 });

Это установит ключ Milk в selectedCategory, но оставит другие дочерние ключи без изменений.


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

firebase.database().ref("Products").update({
  "Beverages/Milk/Imported Milks/Frosted Milk": 20,
  "Beverages/Milk/Imported Milks/Milk Up" : 10
})

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

Aqdas 17.03.2022 15:33
firebase.database().ref("Products/Beverages/Milk").child("Sk‌​im").set(1)?
Frank van Puffelen 17.03.2022 16:09

Я обновил свой вопрос, чтобы сделать его понятным. поэтому он будет динамически создавать узлы Milks, Imported Milks и Local Milks и публиковать свои данные. Итак, что я хочу сделать, это опубликовать весь json в разделе «Напитки» и создать базу данных, как показано на рисунке.

Aqdas 17.03.2022 16:18

Я добавил пример установки узла JSON. Надеюсь, это поможет, но если нет: вы уже пробовали что-нибудь? Можете ли вы показать код того, что вы уже пробовали?

Frank van Puffelen 17.03.2022 17:00

Спасибо, Фрэнк, что ответил мне на этот вопрос. Я отредактировал вопрос и добавил свой код.

Aqdas 17.03.2022 17:37

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

Frank van Puffelen 17.03.2022 17:58

Большое спасибо. это действительно помогло мне

Aqdas 21.03.2022 13:42

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