简体   繁体   中英

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

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 ?

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM