簡體   English   中英

我無法在 Firebase 中創建訂單

[英]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;

carttotalCompra都是 function。

由於您是從上下文中獲取它並且它沒有在任何地方記錄,因此很難說其中哪一個或這兩個。

嘗試記錄這兩個變量並確保只傳遞正確的值。

此外,請確保未傳遞undefined ,因為addDoc中也不允許使用它。

錯誤消息告訴您,您嘗試使用addDoc添加到文檔的字段之一實際上是 function,這是無效的。 我的猜測是, totalCompra是 function。 您需要做的是傳遞一個有效值,例如字符串、數字、boolean、object、數組或 null。 如果您傳遞 function,Firestore 將不會為您調用 function。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM