MuddledRanger 21
MuddledRanger 21

Reputation: 37

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

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
    }
}

Upvotes: 0

Views: 95

Answers (2)

MuddledRanger 21
MuddledRanger 21

Reputation: 37

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')
    }
}

Upvotes: 0

Frank van Puffelen
Frank van Puffelen

Reputation: 599716

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?

Upvotes: 2

Related Questions