Leer colecciones y documentos
Presentación
Firebase Auth
Cloud Firestore
Cloud Storage
Cloud Functions
Curso Firebase para Web se encuentra en desarrollo. Vuelve pronto para encontrar nuevas lecciones.
- Ahora que entendemos la estructura y modelo de datos de Cloud Firestore, leer documentos es sencillo.
- Comencemos por leer un único documento del cual conocemos su ID. Para ello usaremos el método
doc()
para acceder al mismo en la colección yget()
para obtener su información.
const document = await db.collection("users").doc("juanwmedia").get(); // Retorna una Promise
- Como ves
get()
retorna una promesa, por lo que podemos usarthen()
o, mejor aún,async/await
para resolverla y mostrar el contenido. También resulta útil acceder a la propiedadid
del documento, el cual siempre retorna su ID única.
console.log(document.data()); // Desenvuelve el documento
console.log(document.id); // Muestra la ID del documento
- Importante que veamos en su prototipo la existencia de la propiedad
exists
con valortrue
, que indica que el documento existe en la colección. Si pidiésemos uno que no existe, su valor seríafalse
. - Para recuperar los datos del documento debemos utilizar el método
data()
, el cual nos devuelve su contenido. - Por supuesto, también podemos leer todos los documentos de una colección. Por ejemplo nuestra colección
users
. Para ello usamos el métodoget()
directamente sobre una referencia a la colección, lo cual retorna un snapshot o captura de la misma.
const collection = await db.collection("users").get();
- Una vez más, si examinamos lo retornado vemos que existe una propiedad
docs
con los documentos de la colección y otra llamadaempty
, que indica que no está vacía. No estamos lidiando con una matriz, pero en su prototipo vemos que tenemos acceso aforEach()
, por lo que podemos iterar sobre los documentos y llamar al métododata()
(como antes) para desenvolverlos.
...
collection.forEach(doc => console.log(doc.id, doc.data()));
- La misma mecánica podemos usar para consultar documentos que viven en subcolecciones. Por ejemplo vamos a añadir una subcolección con su documento para luego consultarlo. Recuerda que el patrón siempre debe ser collectionID/documentID/collectionID/documentID.
const subDocument = await db
.collection("users")
.doc("juanwmedia")
.collection("meta")
.doc("books")
.get();
- Si te resulta tedioso tener que escribir tanto
collection()
ydoc()
, puedes usar una versión simplificada definiendo como valor dedoc()
toda la ruta necesaria.
const subDocument = await db.doc("users/juanwmedia/meta/books").get();
El primer headless CMS tanto para desarrolladores como para marketers. Pruébalo gratis.
¿Tienes alguna pregunta sobre esta lección de Curso Firebase para Web?
Resuelve todas tus dudas sobre Firebase en la Comunidad de Escuela Vue: un lugar donde participar, aprender y ayudar. ¡Te esperamos!.
Tras el registro (si no lo has hecho ya) serás redirigido/a al canal adecuado en la Comunidad.