ReactJS - ¿Cómo enviar datos de formulario a firebase?

 
Vista:

¿Cómo enviar datos de formulario a firebase?

Publicado por Clara (1 intervención) el 12/11/2022 22:36:16
Hola, tengo el siguiente código pero no sé como enviar los datos del buyer a firebase para generar la orden con los datos que ingrese la persona en el formulario. Obviamente ahora se generan con los datos que estás puestos en el código. Ayuda, por fa.

const Checkout = () => {
const [loading, setLoading] = useState(false)

const { cart, total, clearCart } = useContext(CartContext)

const createOrder = async () => {
setLoading(true)
try {
const objOrder = {
buyer: {
name: 'Pablo León',
phone: '965673973',
email: '[email protected]'
},
items: cart,
total
}
console.log(objOrder)

const ids = cart.map(prod => prod.id)
const productsRef = collection(db, 'products')

const productsAddedFromFirestore = await getDocs(query(productsRef, where(documentId(), 'in' , ids)))
const { docs } = productsAddedFromFirestore

const batch = writeBatch(db)
const outOfStock = []

docs.forEach(doc => {
const dataDoc = doc.data()
const stockDb = dataDoc.stock

const productAddedToCart = cart.find(prod => prod.id === doc.id)
const prodQuantity = productAddedToCart?.quantity

if(stockDb >= prodQuantity) {
batch.update(doc.ref, { stock: stockDb - prodQuantity })
} else {
outOfStock.push({ id: doc.id, ...dataDoc})
}
})

if(outOfStock.length === 0) {
await batch.commit()

const orderRef = collection(db, 'orders')
const orderAdded = await addDoc(orderRef, objOrder)

console.log(`El id de su orden es: ${orderAdded.id}`)
clearCart()
} else {
console.log('Hay productos sin stock')
}
} catch (error) {
console.log(error)
} finally {
setLoading(false)
}
}

if(loading) {
return <h1>Generando orden...</h1>
}

return (
<>
<h1>Checkout</h1>
<form>
<div>
<label>
Name:
<input type="text" name="name" />
</label>
</div>
<div>
<label>
Phone:
<input type="number" name="phone" />
</label>
</div>
<div>
<label>
Email:
<input type="text" name="email" />
</label>
</div>
</form>
<button onClick={createOrder}>Agregar documento</button>
</>
)
}


export default Checkout
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder