Estoy usando reaccionar con firebase/firestore, me estoy moviendo de Angular a React pero tengo problemas para acceder a la base de datos de firestore sin AngularFirestore. Puedo iniciar sesión en firestore y obtener el user.uid, simplemente no puedo acceder a la colección 'pred' que está anidada dentro de cada user.uid, por lo que estos datos son solo para el usuario.
En Angular accedo a mi base de datos así: (funciona)
this.auth.user.pipe(take(1)).subscribe((user) => { if (user) { this.items = this.db .collection("users") .doc(this.user.uid) .collection("pred") .valueChanges();En reaccionar, estoy tratando de hacer la misma colección, documento, colección, pero no puedo encontrar documentación clara sobre cómo hacerlo.
Mi intento de reacción:
import React, { useEffect, useState } from "react"; import { useAuthState } from "react-firebase-hooks/auth"; import { useNavigate } from "react-router-dom"; import "./Dashboard.css"; import { auth, db, logout } from "../../services/firebase/firebase-auth"; import { query, collection, getDocs, where, doc } from "firebase/firestore"; function Dashboard() { const [user, loading, error] = useAuthState(auth); const [name, setName] = useState(""); const navigate = useNavigate(); const fetchData = async () => { const userId = auth.currentUser?.uid; const docRef = collection(db, "users"); const predictions = collection(db, "pred"); const predSnapshot = await getDocs(predictions); const predList = predSnapshot.docs.map((doc) => doc.data()); return predList; };¿Cómo puedo devolver la predList que sigue:
.collection("users") .doc(this.user.uid) .collection("pred")orden de ruta, pero ¿usando reaccionar o simplemente javascript? Estoy usando esta importación {consulta, colección, getDocs, donde, doc} de "firebase/firestore"; paquete pero no puedo ver cómo hacerlo.
Para crear una referencia a la subcolección pred del usuario actual en la nueva sintaxis modular/v9:
collection(db, "users", userId!, "pred")const fetchData = async () => { const userId = auth.currentUser?.uid; const docRef = collection(db, "users", userId as string, "pred"); const preds = await getDocs(docRef); const predList = preds.docs.map((doc) => doc.data()); console.log(predList); };