Creé mis propias aplicaciones web (usando vue.js) y usando firestore como backend. En mi método firebase, traté de usar el método onSnapshot en firestore, pero el resultado no estaba definido.
La versión de firebase es la más reciente (v9).
entonces mi código está abajo.
let user; const snapshot = await onSnapshot(collection(db, "user"), (snap: any) => { let user: any = []; snap.docs.forEach((doc: any) => { user.push({ ...doc.data() }); }); return user; }); snapshot(); console.log(user);Mis datos de Firestore son simples como a continuación.
collection: user documet: uid(automatically made by firebase) data:{ name:'someone name', age:22 }asi que me esperaba el resultado asi
{ name:'someone name', age:22 }pero el resultado fue 'indefinido' ¿Alguien me da un consejo, por favor?
La función onSnapshot no devuelve una Promise , por lo que no puede usar await en ella. Lo que estás buscando es getDoc :
const snap = await getDocs(collection(db, "user")); let user: any = []; snap.docs.forEach((doc: any) => { user.push({ ...doc.data() }); }); console.log(user);Consulte también la documentación de Firebase sobre cómo obtener un documento una vez .