Estoy luchando por un tiempo ahora con este cheque de Firestore.
let currentUser = firebase.auth().currentUser; console.log(currentUser.uid); let docRef = db.collection("StartNumbers").where('UserId', '==', currentUser.uid); docRef.get().then((querySnapshot) => { querySnapshot.forEach((doc) => { if (doc.exists){ console.log('document exists') chooseMode.style.display = 'grid'; onlinePopout.style.display = 'none'; console.log('user is logged in'); } else { console.log('no such document'); nameOuter.style.display = 'grid'; } }); }).catch ((err) => { console.log("Error getting document:", err) })Si existe doc, todo funciona bien. Si no existe tal documento, no pasa nada, no hay mensaje de error, no hay consola.log...
¿Me pueden ayudar a encontrar mi error?
Las consultas devolverán documentos que coincidan exactamente con su condición y eso esencialmente significa que todos los documentos devueltos en QuerySnapshot existen. Por lo tanto, es redundante agregar que if (doc.exists) verifique un bucle forEach .
Si no existe tal documento, no pasa nada.
Debe usar la propiedad .empty en QuerySnapshot para verificar si su consulta devolvió algún documento coincidente como este:
let docRef = db.collection("StartNumbers").where('UserId', '==', currentUser.uid); docRef.get().then((querySnapshot) => { if (querySnapshot.empty) { console.log("NO documents matched the condition") } else { console.log(querySnapshot.docs.map(doc => doc.data())) // proceed with adding HTML elements here } })