Home > Net >  Unable to check whether a field exists in a nested collection Firebase v9
Unable to check whether a field exists in a nested collection Firebase v9

Time:03-17

Sorry I'm still new to this, but I'm trying to check whether a specific field (docName) value already exists in a nested collection to perform as a condition. I'm new to v9 and I'm slowly working my way around it, but I've looked all over and I'm still unable to get the appropriate solution.

Ref:

'teachers/${uid}/contracts/autoDocID'

What I have tried

const Contract = async (data) => {
    const q = query(collection(db, "teachers", data.uid, "contracts"), where("docName", "==", `${data.docName}`)); 
    const condition = await getDocs(q).exists;

    if(!condition){
        //adding new doc
    }
}

CodePudding user response:

The await getDocs(q) returns a QuerySnapshot object, which doesn't have an exists property.

Are you looking to check if the snapshot is empty?

CodePudding user response:

I was able to do it like this:

const Contracts => async(data) = {
    const docRef = doc(db, "teachers", data.uid);
    const colRef = collection(docRef, "contracts");
    const q = query(collection(db, "teachers", data.uid, "contracts"), where("docName", "==", `${data.docName}`));
    const check = await getDocs(q);

    if(!check){
        await addDoc(colRef, {
            expiration: data.expiration,
            docName: data.docName,
            docUrl: data.docUrl,
        });
    } else {
        console.log('already exists')
    }
}
  • Related