3

I have a firebase firestore with some reference datatype.

It looks like this: enter image description here

enter image description here

I Hope, this is the correct way.

Now when i get my user from firebase, i have this reference object with the id of it. But if i call my function to get the doc, i get an error message:

First my function and how i call it:

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)

And here the error message:

Uncaught (in promise) FirebaseError: Invalid collection reference. Collection references must have an odd number of segments, but clubs/vA7R94pX3bpHDsYIr6Ge has 2.
Dharmaraj
  • 47,845
  • 8
  • 52
  • 84
Jonathan Sigg
  • 306
  • 3
  • 12

1 Answers1

4

If you have the DocumentReference already then you can use getDoc() function to retrieve the document from Firestore as shown below:

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)

For the error in the question, to create a DocumentReference, if you have the document ID then you should doc() function instead of collection() that is used to create a CollectionReferencce as shown below:

const docRef = doc(db, 'clubs', clubID);

Also checkout: Firestore: What's the pattern for adding new data in Web v9?

Dharmaraj
  • 47,845
  • 8
  • 52
  • 84