Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase - How can i get data from reference?

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.
like image 506
Jonathan Sigg Avatar asked Aug 16 '26 09:08

Jonathan Sigg


1 Answers

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?

like image 190
Dharmaraj Avatar answered Aug 17 '26 23:08

Dharmaraj



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!