Como soy nuevo en firebase y React, agradezco su ayuda ya que he probado casi todo.
La siguiente es mi estructura de datos en firebase.
Cuando agrego un nuevo tipo de bebida , es decir, leche con sus campos, es decir, con nodos anidados y datos a Productos , firebase genera un nodo secundario basado en un número aleatorio. Ayúdenme y háganme saber cómo puedo crear nodos secundarios personalizados sin texto como se menciona en la estructura de datos. en realidad, tengo json listo como se menciona a continuación y quiero agregar un nuevo tipo de bebida con sus detalles como se menciona a continuación en json.
"Id" : 1, "Milk" : { "Id" : 2, "Imported Milks" : { "Frosted Milk" : 20, "Milk Up" : 10 }, "Local Milks" : { "Cow Power" : 5, "Milk Man" : 3 } }siguiente es mi código:
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 } } } );Acabo de hacer algunos cambios en mi código. Funcionó, pero el conjunto se eliminó todos los registros anteriores y se agregó solo uno nuevo.
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 } } } } );Gracias
Si desea agregar una nueva bebida con una clave que usted especifique, puede hacerlo:
firebase.database().ref("Products/Beverages/Beers").child("Lagunitas").set(1); Entonces, lo importante aquí es que no llamamos push (que generaría una ID), sino que especificamos su propia clave (en la llamada a child() en este caso).
Si desea configurar un objeto JSON completo, sería:
firebase.database().ref("Products").set({ Beverages: { Beers: { Id: 1, "Imported Beers": { Bella: 20, LoveBug: 5 } } } }) Si desea utilizar el valor de la variable de su product en la ruta para actualizar una ruta en la base de datos, puede hacerlo:
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 } } }); Esto establecerá la clave Milk en selectedCategory , pero dejará otras claves secundarias sin modificar.
Si desea realizar una actualización profunda de una clave en una rama, también puede usar una ruta como clave. Entonces, por ejemplo, para agregar los dos elementos a Imported Milks , pero dejar cualquier otro valor sin modificar, haría lo siguiente:
firebase.database().ref("Products").update({ "Beverages/Milk/Imported Milks/Frosted Milk": 20, "Beverages/Milk/Imported Milks/Milk Up" : 10 })