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