Firestore es una base de datos no relacional que facilita la gestión de datos de manera flexible a través de colecciones y documentos. Para crear una colección en Firestore, es necesario contar al menos con un documento. A continuación, exploraremos cómo manejar documentos y los diferentes tipos de datos en Firestore.
¿Qué tipos de datos maneja Firestore?
Firestore comparte similitudes con bases de datos SQL en cuanto a los tipos de datos. Aquí están algunos de los más importantes que podemos utilizar:
String: Representa texto y puede almacenar cualquier cadena de caracteres.
Number: Almacena números, aceptando tanto enteros como flotantes.
Boolean: Un tipo de dato binario que representa verdadero o falso.
Map: Permite crear documentos anidados dentro de documentos principales, similar a estructuras de JSON.
Array: Un conjunto de datos de cualquier tipo, excepto otro array.
Null: Indica la ausencia de un valor específico en un campo.
Timestamp: Almacena fechas y horas detalladas, útil para seguimientos cronológicos.
Geopoint: Almacena coordenadas geográficas con latitud y longitud.
Reference: Crea referencias a otros documentos dentro o fuera de la misma colección.
¿Cómo se crean documentos en Firestore?
Para crear un documento en Firestore, sigue estos pasos:
Accede a la interfaz web de Firestore.
Elige la colección en donde deseas crear el documento, o crea una nueva si es necesario.
Haz clic en "Crear documento".
Define un ID único para tu documento. Puedes permitir que Google genere este ID automáticamente para asegurar su unicidad.
Añade los campos de datos que desees, eligiendo el tipo más apropiado según la naturaleza de la información.
- String: "nombre": "Laura"
- Number: "edad": 27
- Boolean: "activo": true
- Timestamp: "fechaDeRegistro": 14 de julio de 2038, 12:04:00
¿Cómo gestionar documentos y colecciones en Firestore?
Firestore permite una gestión sencilla de datos, pero debemos ser cuidadosos al modificarlos o eliminarlos:
Edición: Puedes hacer clic en cualquier campo para modificar su valor y guardar los cambios.
Eliminación de campos: Utiliza el ícono de bote de basura junto al campo para eliminarlo del documento.
Eliminación de documentos y colecciones: Ten en cuenta que eliminar un documento o una colección es una acción irreversible que también elimina todos los datos contenidos. Debes escribir el nombre de la colección para confirmar la eliminación.
¿Qué es un Geopoint y un Reference en Firestore?
Geopoint: Es un tipo de dato específico de Firestore que almacena ubicaciones geográficas mediante latitud y longitud. Esto es esencial para aplicaciones que necesitan geo-referenciación como servicios de mapas.
Reference: Esta es la única manera que Firestore tiene para relacionar documentos entre sí. Un campo de tipo Reference puede apuntar a otro documento dentro de la misma colección o en una diferente. Es útil para conexiones directas y relaciones simples entre datos.
Explorar y entender estos tipos de datos nos ofrece flexibilidad en el diseño y administración de nuestras bases de datos. Firestore está diseñado para ser intuitivo y eficiente, proporcionando herramientas potentes para el manejo de documentos y colecciones. ¡Continúa explorando y experimentando para aprovechar al máximo sus capacidades!
Tengo 2 años de experiencia con Firestore, y luego de meterme hasta los dientes al punto de mantener contacto con google devs detrás del driver de Firestore para Node levantando hilos en Github, dejenme decirles que Firestore solo es excelente cuando quieres maquetar ideas o hacer MVP de un proyecto. En lógicas de negocio nivel medio y avanzado es una verdadera decepción. Vayanse a Mongo Atlas definitivamente, ahí yo encontré la solución a todos mis problemas aunque me haya costado mucho más estudio que lo que me tomó Firestore.
Tipos de datos en Firestore
• String
• Number
• Boolenan
• Map -> Da la opcion de meter otro document dentro del que ya estas creando
• Array ->Arreglo para meter un grupo de datos que no se ocupa identificador y estructura
• Null -> No se ha definido el valor
• Timestamp
• Geopoint ->Guarda una localización geográfica.
• Reference -> Mandar liga a otro documento. Puede ser en la colección actual u otra colección
Es una buena opción, sencilla y rapida de implementar y si se hace correctamente, fácil de mantener. Cuando creces mucho puede que genere costos un poco mayores que lo tradicional
Apuntes:
Un ID en un documento, funciona como un N° de serie.
Los tipos de datos con los que se pueden trabajar pueden ser de tipo string (como cadenas de texto), number (que acepta tanto valores enteros como decimales), asi como también booleanos (que aceptan un true o false, es decir verdadero o falso).
El tipo de dato map en específico, permite crear un documento dentro de otro documento. El tipo de datos array, como su nombre lo indica acepta un arreglo que a su vez permite contener datos con sus respectivos índice y valor, similar al map.
El tipo de datos timestamp y el tipo de dato null, funciona de manera muy similar al modelado SQL.
El tipo de dato geopoint, nos permite guardar una localización geográfica, algo muy útil en aplicaciones como Google maps.
El tipo de datos reference nos envia una “liga” a otro documento, es decir funcionaria como una llave foránea, haciendo alusión a SQL.
Me he metido Firestore hasta los dientes para proyectos IoT y web simples, y en mi experiencia personal me ha dado mil problemas. Los queries muy muy simples. Le hace mucha falta el .populate() de Mongo sin que te cueste tanto sufrimiento volver a hacer GET al endpoint. Problemas con escritura de lotes. Un fastidio lo del cold-start del hosting y del Firestore mismo. Un fastidio también el tema de las reglas porque hasta eso te cobran siendo que a veces haces cosas súper simples que comprometen exponencialmente tus costos. MUY recomendado para maquetar proyectos y hacer MVP de ideas, pero para producción es terrible.
en una base de datos NoSql se pueden definir mapas dentro de un registro.
en DynamoDB funciona de la misma manera
Ejemplo:
{
nombre: "Nombre estudiante",
Apellido: "Apellido_Estudiante",
Materias:
{
Nombre_Materia : "Nombre1"
Contenido: "Contenido de la mteria"
}
}
La profundidad con la cual se puede llegar a trabajar depende de cada base de datos
Me parece soprendente que no puedes crear una colección sin documentos, pero sí puedes eliminar todos los documentos de una colección pero ella seguirá ahí.
Orden de los tipos de valor
Cuando una consulta incluye un campo con valores de varios tipos, Cloud Firestore usa un orden determinista basado en representaciones internas. La lista siguiente muestra el orden:
**Null **- Valores nulos
**Boolean **-Valores booleanos
**Integer, Floating, Numeric ** Valores de números enteros y de coma flotante, en orden numérico
Valores de fechas
Valores de strings de texto
Valores de bytes
Referencias de Cloud Firestore
Valores de puntos geográficos
Valores de matrices
Valores de mapas
Un array es una estructura que contiene datos puros dentro de el, es como tener una lista de datos juntos: [1,'cadena', true, 'otro-dato']. En cambio el map viene a ser como un documento dentro de otro documento. Como un JSON
Excelente vídeo, entre todas las variables que vimos me llamo la atención la de Map para crear subagrupaciones y la Geopoint para poder establecer un punto específico en el mapa, dependiendo la funcionalidad que le demos a la base de datos, estas tendrán bastante utilidad.
Al principio no encontraba la ventana que estaba mostrando el profesor en la clase y validando me di cuenta que había cambiado el nombre del botón de "Database" a "Cloud Firestore". Quizás a alguien le sirva de ayuda jejej