No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Firebase 5 para Web

Curso de Firebase 5 para Web

Juan Guillermo Gómez Torres

Juan Guillermo Gómez Torres

Configuración de Firestore al proyecto

16/32
Recursos

¿Cómo habilitar Firestore en tu proyecto de Firebase?

Iniciar con Firestore en tu proyecto de Firebase es un proceso directo que puede brindarte flexibilidad en el manejo de tus datos. Firestore es una base de datos en la nube que se replica en múltiples regiones, lo que asegura la disponibilidad y consistencia global. Para comenzar a usarla, primero debes activarla en la consola de Firebase. Pero no te preocupes, aquí te llevaré de la mano en el proceso.

¿Cómo crear una base de datos en Firestore?

  1. Accede a la consola de Firebase: Ve a tu proyecto en la consola de Firebase y selecciona la pestaña de base de datos.
  2. Crea una base de datos: Haz clic en "crear base de datos". Aquí te ofrecerán recomendaciones sobre las "reglas de seguridad".
    • Modo bloqueo: Este es el modo más seguro, ya que restringe tanto la lectura como la escritura.
    • Modo prueba: Recomendado para desarrolladores, ya que permite pruebas sin restricción de autenticación.
  3. Habilita Firestore: Selecciona el modo prueba para comenzar a experimentar sin limitaciones.

¿Cómo trabajar con colecciones y documentos?

Una vez configurada la base de datos, puedes empezar a añadir colecciones y documentos.

  • Añadir una colección: Crea una nueva colección, que será un grupo de documentos. Por ejemplo, nómbralo "Post".
  • Crear documentos: En cada colección, puedes añadir documentos. Cada documento puede contener campos clave-valor con diversos tipos de datos como string, timestamp, array, entre otros.
  • Ejemplo:
    • Crea un documento con campos como título (string), descripción (string), fecha (timestamp), y autor (string).
    • Los documentos también pueden incluir arreglos, como categorías que pueden ser un array de strings, por ejemplo, ["deportes", "noticias"].

¿Cómo gestionar subcolecciones?

Firestore permite anidar subcolecciones dentro de los documentos, aunque es recomendable limitar esta práctica para mantener consultas eficientes.

  • Crear subcolección: Añade una subcolección, por ejemplo, "comentarios" dentro de un documento "Post".
    • Agrega documentos dentro de la subcolección, incluyendo detalles como autor y comentario.
  • Consejo: Las consultas son más eficientes si se limita el uso de subcolecciones. Considera convertir subcolecciones amplias en colecciones principales vinculándolas mediante campos de referencia.

¿Cómo integrar Firestore en tu proyecto web?

Para usar Firestore desde una aplicación web, necesitarás integrar los scripts específicos de Firebase.

  1. Acceder a la documentación de Firebase: Sigue los pasos en la guía de Firebase para configurar y administrar tu proyecto.
  2. Añadir scripts: Copia el script correspondiente de Firestore desde la documentación de Firebase.
  3. Incluir en tu archivo de proyecto: Pega el script en tu archivo index.html para comenzar a interactuar con Firestore desde tu aplicación.

Con estos pasos, tendrás los servicios de Firestore integrados en tu proyecto, permitiéndote leer, escribir y gestionar datos de manera eficiente. Sigue aprendiendo y practicando para dominar las posibilidades que ofrece Firestore. ¡Feliz codificación!

Aportes 15

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Cuando cree el proyecto de firebase, me selecciono la base de datos firestore en modo datastore por defecto, por ende los codigos de este curso no me funcionaron.
Toco crear un proyecto desde Cloud Platform y seleccionar la base de datos firestore en modo nativo (No datastore), y luego agregar ese proyecto a firebase.

Por si alguno tenga el mismo problema 😃

Solo podemos manejar una base de datos con Firestore por proyecto, por ahora...

Lo que se hizo en este capítulo fue simular una base relacional, al pasar la subcolección a coleccion y pasarle un id de referencia. Por lo que entendí, no se requiere una estructura previa y es flexible

Esto también facilita las consultas? como haciendo joins(simulando sql) o algo por el estilo?

Porqué idPost es de tipo string y no de tipo reference??

Solo podemos manejar una base de datos con Firestore por proyecto, por ahora...

¿Por qué es recomendado crear colecciones en vez de subcolecciones? ¿Es por performance o para organizar mejor nuestra aplicación? 🤔

Entendido

Si quisiera guardar la fecha y hora por separado, que forma seria la recomendada?

Me pasó lo mismo que a Victor Riveros, el proyecto se creó con base de datos en modo datastore, para cambiarlo hice lo siguiente:

  1. En el dashboard de firebase hice click en ‘Firestore Database’.
  2. Hice click en la opción dentro del banner de “Ir a google cloud console”.
  3. Al lado del buscador hice click en el icono de la terminal
  4. Dentro de la terminal ingrese este comando (la BD debe estar vacía para poder hacer este cambio como indican acá )
$ gcloud alpha firestore databases update --type=firestore-native
  1. Listo

Parece que la creacion de bases de datos se hace por la consola de cloud shell no veo que en el UI de la consola se pueda 🤔
https://cloud.google.com/firestore/docs/manage-databases?&_ga=2.163031352.-548240433.1672752628#create_a_database

Leyendo los comentarios, ya entendi el porque de esto. Cuando se hace una consulta a un documento con documentos embebidos (esto es una subcoleccion), esta no te trae esa subcoleccion. Entonces tienes que hacer otro query con la informacion del documento obtenido. Seria algo como esto:

  1. Se obtiene un documento
    {
    author: “Jorge L. Bou-saad”,
    titulo: “titulo_test”,
    descripcion: "descripcion_test"
    subcoleccion: {referencia_subcoleccion}
    }

  2. se hace un query con referencia_subcoleccion

Claramente esto es mas trabajoso y adems que Firebase cobra por conexion…entonces pagaras mas por uso.

Opino que punto menos para firebase. Deberian tratar de cambiar eso (a menos que en 2022, esto se haya cambiado). Yo preferiria usar mongoDB.

hmmm no estoy de acuerdo con lo que se hizo con los comentarios. Las bases de datos orientadas a documentos tienen la caracteristica en que al embeber documentos es mucho mas rapido para la lectura y recuperacion de datos. En el curso de mongoDB explican esto muy bien.

Entonces, al crear una coleccion de comentarios y en cada documento se crea una llave foranea de los post (idPost), no se aprovecha el poder de NoSQL. Claro…yo estoy pensando como en MongoDB y otras bases de datos NoSQL. Quizas firestore no tiene ese mismo poder (aunque lo dudo, debe tenerlo). Pero al hacer un modelo relacional en NoSQL no se aprovecha bien el poder de la velocidad y mas el poder de las redundancias. Habria que estudiar esto muy cientificamente con comporaciones entre mongoDB y Firestore (lo hare cuando pueda). Si realmente firestore no tiene esa capacidad, para mi no tiene sentido usar firestore como base de datos orientada a documentos…preferiria 1000 veces mongoDb aunque tenga que construir un backend. Esto es para pensarlo…pero creo que el profesor se equivoco aqui.

Se ve bastante “libre” a nivel de estructura, en sql es algo complicado reestructurar o hacer consultas masivas …

index.html

<!-- Firebase App (the core Firebase SDK) is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/7.12.0/firebase-app.js"></script>

<!-- If you enabled Analytics in your project, add the Firebase SDK for Analytics -->
<script src="https://www.gstatic.com/firebasejs/7.12.0/firebase-analytics.js"></script>

<!-- Add Firebase products that you want to use -->
<script src="https://www.gstatic.com/firebasejs/7.12.0/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.12.0/firebase-firestore.js"></script>

el Id documento, es id del registro o id de lo que seria equivalente a una tabla en E-R?