Tengo una base de fuego firestore con algún tipo de datos de referencia.
Espero que esta sea la forma correcta.
Ahora, cuando obtengo mi usuario de firebase, tengo este objeto de referencia con su id. Pero si llamo a mi función para obtener el documento, aparece un mensaje de error:
Primero mi función y cómo la llamo:
export const getClubById = async (id: string) => { const doc = collection(db, 'clubs', id) return doc } const userData = dbUser.data() const club = await getClubById(userData.selectedClub.id) console.log('club', club)Y aquí el mensaje de error:
Uncaught (in promise) FirebaseError: Invalid collection reference. Collection references must have an odd number of segments, but clubs/vA7R94pX3bpHDsYIr6Ge has 2.Si ya tiene DocumentReference , puede usar la función getDoc() para recuperar el documento de Firestore como se muestra a continuación:
import { getDoc, DocumentReference } from "firebase/firestore"; export const getClubById = async (clubDocRef: DocumentReference) => { const clubSnapshot = await getDoc(clubDocRef); return clubSnapshot.data(); } // Pass the reference itself to the function instead of doc ID const club = await getClubById(userData.selectedClub) Para el error en la pregunta, para crear una DocumentReference , si tiene la ID del documento, entonces debe hacer la función doc() en lugar de collection() que se usa para crear una CollectionReferencce como se muestra a continuación:
const docRef = doc(db, 'clubs', clubID);Consulte también: Firestore: ¿Cuál es el patrón para agregar nuevos datos en Web v9?