Estoy guardando datos de pedidos en Firebase en tiempo real, pero la tecla de inserción que guardo en el objeto de matriz es diferente de lo que obtengo como tecla de inserción
function confirmOrder() { let array = [] const Oid = firebase.app().database(DATABASE_URL).ref('/Order/').push(); array.push({ total: getTotal(), oid: Oid.key, totalItems: cartItems.length }) for (let index = 0; index < cartItems.length; index++) { var key = `item${index + 1}`; var obj = {}; obj[key] = cartItems[index].qty + ' ' + cartItems[index].name + ' Rs.' + cartItems[index].price; array.push(obj) } setOrder(Object.assign(...array)) firebase.app().database(DATABASE_URL).ref('/Order/' + Oid.key).set(order); }No estoy seguro de que sea la causa del problema, pero ¿puede probar esta versión (más corta) de la última línea?
Oid.set(order); Actualización : el método setState y los ganchos useState actualizan el estado de forma asincrónica, por lo que el order aún no se actualizará en la siguiente línea.
Puede esperar a que se complete el pedido o simplemente usar array como valor:
Oid.set(Object.assign(...array));Ver también: