Home > other >  How to query in a specific document in Firebase
How to query in a specific document in Firebase

Time:08-07

I have some code that gets a collection reference to the users collection and then queries an animeID field whether it contains a certain value or not. I want to change this and only query inside the document with the id i pass. So if you look at the picture of my firestore you can see that i have two documents inside the users collection each with their unique id. I want to query for the animeID field only in the document that i want. Not all the documents as it does right now. How would i go about doing this? I have tried using doc and then passing in the id of the document but i don't think query works on doc as it gives me an error. Thanks

const docRef = collection(db, 'users')
  const q = query(docRef, where('animeID', 'array-contains', parseInt(id)))
  onSnapshot(q, (snapshot) => {
    let results = []
    snapshot.docs.forEach((doc) => {
      results.push({...doc.data(), id: doc.id})
    })
    if(results.length > 0){
      console.log(true)
    }
    else{
      console.log(false)
    }
  }, (error) => {
    console.log(error)
  })

Firestore structure:

enter image description here

CodePudding user response:

You need to do as explained in the doc:

import { doc, getDoc } from "firebase/firestore";

const docRef = doc(db, "users", "dbmbEiR6....");
const docSnap = await getDoc(docRef);

if (docSnap.exists()) {
  const animeID = docSnap.data().animeID;
  // Do whatever you want with animeID
  // E.g. log its value:
  console.log(JSON.stringify(animeID));
} else {
  // doc.data() will be undefined in this case
  console.log("No such document!");
}

So you don't need to declare a Query in this case. Just declare a DocumentReference and use the getDoc() method.

  • Related