[英]I can't create an order in Firebase
我正在使用 ReactJS 創建一個應用程序。 這是一個電子商務。 在我將一些產品添加到購物車后,我必須填寫表格才能完成訂單。 那應該將信息發送到 Firebase 並創建一個新集合,但我收到錯誤
未捕獲的 FirebaseError:使用無效數據調用 Function addDoc()。 不支持的字段值:function(在文檔 ventas/GPFfrRZ6mOd7fEZA9Y1a 的字段總數中找到)
這是我在購物車中的代碼:
import React, { useContext, useState, useEffect } from 'react';
import { CartContext } from '../../Context/CartContext';
import { doc, addDoc, collection, updateDoc, getFirestore } from 'firebase/firestore';
import Swal from 'sweetalert2';
import Form from '../Form';
const Cart = () => {
const { cart, removeItem, emptyCart, totalCompra } = useContext(CartContext);
const [idVenta, setIdVenta] = useState("");
const finalizarCompra = () => {
const db = getFirestore()
const ventasCollection = collection(db, "ventas");
addDoc(ventasCollection, {
items: cart,
total: totalCompra,
}).then((result) => {setIdVenta(result.id)});
cart.forEach((item) => {
const updateCollection = doc(db, 'items', item.id)
updateDoc(updateCollection,{
stock: item.stock - item.quantity,
})
});
emptyCart();
}
useEffect(() => {
if (idVenta.length > 0) {
Swal.fire({
position: 'top-end',
icon: 'success',
title: 'Se ha registrado la compra en el sistema con el siguiente id: '+ idVenta,
showConfirmButton: false,
timer: 2000
});
}
})
return (
<>
<div>Cart</div>
{cart.map((product, key) => (
<div key={key}>
<div>{product.titulo}</div>
<p>Precio por unidad: ${product.precio}</p>
<p>Cantidad: {product.qty}</p>
<button onClick={ () => {removeItem(product.id)}}>ELIMINAR</button>
</div>
))}
<button onClick={emptyCart}>VACIAR CARRITO</button>
<p>PRECIO FINAL: ${totalCompra()}</p>
<div>
<Form fCompra={finalizarCompra} />
</div>
</>
);
};
export default Cart;
cart
或totalCompra
都是 function。
由於您是從上下文中獲取它並且它沒有在任何地方記錄,因此很難說其中哪一個或這兩個。
嘗試記錄這兩個變量並確保只傳遞正確的值。
此外,請確保未傳遞undefined
,因為addDoc
中也不允許使用它。
錯誤消息告訴您,您嘗試使用addDoc
添加到文檔的字段之一實際上是 function,這是無效的。 我的猜測是, totalCompra
是 function。 您需要做的是傳遞一個有效值,例如字符串、數字、boolean、object、數組或 null。 如果您傳遞 function,Firestore 將不會為您調用 function。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.