Estoy tratando de obtener datos de un documento:
await db.collection("collectionName").doc(uid).get("root").data()pero obtengo: 'los datos no son una función', lo cual es extraño, si elimino los datos ()
await db.collection("collectionName").doc(uid).get("root")Obtengo el siguiente objeto y, de hecho, puedo ver el campo raíz en _fieldsProto
QueryDocumentSnapshot { _fieldsProto: { root: { mapValue: [Object], valueType: 'mapValue' } }, _ref: DocumentReference { _firestore: Firestore { _settings: [Object], .......¿Alguien sabe cómo puedo obtener campos de QueryDocumentSnapshot?
editar:
Me di cuenta de que estaba llamando a data() antes de esperar. El código de trabajo es:
const snapshot await db.collection("collectionName").doc(uid).get() console.log(snapshot.data())Sugiero comenzar con la documentación para aprender cómo obtener un documento de Firestore . get() devuelve una promesa que se cumple cuando se completa la consulta.
db.collection("collectionName").doc(uid).get().then(doc => { if (doc.exists) { console.log("Document data:", doc.data()); } else { // doc.data() will be undefined in this case console.log("No such document!"); } }).catch((error) => { console.log("Error getting document:", error); }); Por lo que puedo decir, no está utilizando then o await para esperar a que se complete la consulta y obtener la instantánea en la devolución de llamada. Ese no es un paso opcional: los resultados de la consulta no están disponibles de inmediato.
Además, get() no acepta ningún argumento. Si desea un campo fuera de la instantánea, debe profundizar en la instantánea proporcionada por la devolución de llamada. Si el campo de su documento se llama "raíz", simplemente acceda a él como cualquier propiedad de objeto:
console.log(doc.data().root)