Estoy tratando de obtener los detalles del pedido de firestore usando la siguiente función. Pero aquí no devuelve ninguna respuesta y muestra que docSnap.data() no es una función
La estructura de mi base de datos es - Usuario/id de usuario/pedidos/datos
¿Cómo puedo obtener datos como respuesta sin ningún error?
Aquí está mi código a continuación:
import React, { useState, useEffect } from "react"; import { db } from "./firebase"; import { collection, doc, getDoc, orderBy } from "firebase/firestore"; import "./Orders.css"; import { useStateValue } from "./StateProvider"; const Orders = () => { const [{ basket, user }, dispatch] = useStateValue(); const [orders, setOrders] = useState([]); useEffect(async () => { console.log(user?.uid); try { const docRef = doc(db, `${user?.uid}/orders/`); const docSnap = await getDoc(docRef); console.log(docSnap); } catch (e) { console.log(e); } }, []); return ( <div className="orders"> <h1>orders here</h1> </div> ); }; export default Orders;Aquí está la ruta completa al documento que espero que lea la función.
Si db es un objeto FirebaseFirestore , esto no tiene sentido:
const docRef = doc(db, `${user?.uid}/orders/`); const docSnap = await getDoc(docRef); Está creando una referencia a un documento llamado orders en una colección user?.uid . Esto no coincide con su estructura de datos, que sería:
const ordersRef = collection(db, `users/${user?.uid}/orders`); Así que ahora ordersRef es una colección de la subcolección de pedidos para el usuario específico. Luego puede leerlo llamando a getDocs :
const ordersQuerySnapshot = await getDocs(ordersRef);Y recorrerlos con:
ordersQuerySnapshot.docs.forEach((doc) => { console.log(doc.id, doc.data()); })