Quiero hacer una función de utilidad que devuelva true o false dependiendo de si existe un documento de Firestore en una colección.
A continuación se muestra lo que escribí originalmente, pero devuelve una promesa en lugar de un valor booleano.
async function docExists(docName, docId) { const docRef = db.collection(docName).doc(docId); await docRef.get().then((docSnapshot) => { if (docSnapshot.exists) { return true } else { return false } }); }¿Hay alguna forma de que devuelva un booleano, o es simplemente la forma incorrecta de abordar el problema?
No hay necesidad de mezclar la sintaxis await y .then como lo hizo en su pregunta. Esto debería ser suficiente:
async function docExists(docName, docId) { const docRef = db.collection(docName).doc(docId); let docSnapshot = await docRef.get(); if (docSnapshot.exists) { return true; } else { return false; } } Alternativamente, a través del uso del encadenamiento de promesas , debería poder simplemente agregar la palabra clave de return antes del original await docRef.get().then(...) que tiene en su pregunta.
Un trazador de líneas simple para eso podría ser:
const docExists = async (docName, docId) => (await db.collection(docName).doc(docId).get()).exists