Поскольку я новичок в firebase и React, я ценю вашу помощь, так как перепробовал почти все.
Ниже приведена моя структура данных в 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
}
}
}
}
);
Спасибо
Если вы хотите добавить новый напиток с ключом, который вы указали сами, вы можете сделать:
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
})
firebase.database().ref("Products/Beverages/Milk").child("Skim").set(1)
?
Я обновил свой вопрос, чтобы сделать его понятным. поэтому он будет динамически создавать узлы Milks, Imported Milks и Local Milks и публиковать свои данные. Итак, что я хочу сделать, это опубликовать весь json в разделе «Напитки» и создать базу данных, как показано на рисунке.
Я добавил пример установки узла JSON. Надеюсь, это поможет, но если нет: вы уже пробовали что-нибудь? Можете ли вы показать код того, что вы уже пробовали?
Спасибо, Фрэнк, что ответил мне на этот вопрос. Я отредактировал вопрос и добавил свой код.
Я добавил еще две секции, но на данный момент это похоже на движущуюся мишень. Я рекомендую изучить как создать минимальный, полный, проверяемый пример, чтобы у нас было больше шансов получить краткий ответ за один раз.
Большое спасибо. это действительно помогло мне
Я хочу добавить еще один вид напитков, т. е. на этот раз молоко вместо пива.