Tengo una colección de 'usuarios' en Firebase. Esta colección tiene algunos campos que me gustaría representar en la pantalla
Tengo una clase Inicio que contiene la siguiente función:
const db = firebase.firestore(); export class Home extends Component { constructor(props) { super() } componentDidMount(){ db.collection('/users') .doc(firebase.auth().currentUser.uid) .get() .then(querySnapshot => { querySnapshot.forEach(uid => { let data = uid.data(); console.log(data); }) }) } } Sin el .doc(firebase.auth().currentUser.uid) , obtengo todos los campos de todos los usuarios en la pantalla, pero cuando agrego esto, para obtener los detalles por usuario, encuentro el error "No detectado (en promesa) TypeError: querySnapshot.forEach no es una función". Gracias de antemano por la ayuda.
Está utilizando get() en una DocumentReference que devuelve una DocumentSnapshot que contiene datos de un solo documento y no hay ningún método forEach presente en él. Entonces, solo usar data() directamente en la instantánea debería ser suficiente. Intente refactorizar el código como se muestra a continuación:
componentDidMount() { db.collection('/users') .doc(firebase.auth().currentUser.uid) .get() .then((docSnapshot) => { console.log(docSnapshot.data()) }) } Si está tratando de obtener todos los documentos de la colección de usuarios, use get() en CollectionReference (esencialmente elimine el .doc(uid) ) como se muestra a continuación:
componentDidMount() { db.collection('/users') .get() .then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(doc.data()) }) }) }