Tengo una colección de usuarios y estoy tratando de buscar si existe el nombre y el apellido y, si no, solo quiero mostrar un mensaje de visualización que no existe. Intenté esto pero no funciona, ejecutará el catch
.
async function readUser() { try { const q = query( collection(db, "users"), where("firstName", "==", firstName), where("lastName", "==", lastName) ); const docSnap = await getDoc(q); if (docSnap.exists()) { console.log("Document data:", docSnap.data()); } else { // doc.data() will be undefined in this case console.log("No such document!"); } } catch (err) { console.log("cannot add user"); } }
Primero, si está ejecutando una consulta, debe usar getDocs()
. getDoc()
se usa para obtener un solo documento. Luego obtendrá una QuerySnapshot que no tiene una propiedad exists
. Si, en cambio, puede verificar si la consulta devolvió una respuesta vacía (es decir, ningún documento coincidente) usando la propiedad empty
. Intente refactorizar el documento como se muestra a continuación:
async function readUser() { try { const q = query( collection(db, "users"), where("firstName", "==", firstName), where("lastName", "==", lastName) ); const querySnap = await getDocs(q); if (querySnap.empty) { console.log("No matching document, name available"); } else { console.log("Name found", querySnap.docs.map((d) => d.data())); } } catch (err) { console.log("cannot add user"); } }