Categorías
Angular Firebase Sin categoría

Cómo definir una fecha en hora local para firebase sin morir en el intento

Según Wikipedia, El tiempo universal coordinado o UTC es el principal estándar de tiempo por el cual el mundo regula los relojes y el tiempo. Es uno de los varios sucesores estrechamente relacionados con el tiempo medio de Greenwich (GMT).

Firebase entonces siempre nos entrega las horas en UTC. El problema es que si tienes alguna funcionalidad que dependa de la hora local, jamás va a coincidir la hora que Firebase te da, con la de tu zona horaria. Tendrás que procesarla antes de usarla.

A Colombia por ejemplo, le corresponde la zona horaria UTC-5 lo que quiere decir que nos encontramos 5 horas por detrás del meridiano de Greenwich. Aquí te va un ejemplo de cómo ajustar la hora para que coincida con tu hora local y no mueras en el intento:

En este ejemplo, necesito asignar a la fecha de inicio (variable inicio) el día de hoy a primera hora de la mañana (12:00:00 a.m.). Y a la fecha de fin (variable fin) el día de hoy a ultima hora del día (11:59:59 p.m.). Entonces:

Defino una variable para guardar cada una de las fechas en formato UTC que es el que me entrega Firebase. Estas variables tienen el mismo valor pero más delante las utilizaremos de diferente manera:

const inicioUtc = new Date();
const finUtc = new Date();

Seteo en cada variable las horas que necesito, de manera que la de inicio corresponda a la primera hora de la mañana y la de fin corresponda a la última de la noche:

inicioUtc.setHours(0, 0, 0, 0);
finUtc.setHours(23, 59, 59, 999);

A cada una de las fechas le sumo las 5 horas de diferencia que tenemos con la zona horaria UTC:

const inicio = new Date(inicioUtc.getTime() + 5 * 60 * 60 * 1000);
const fin = new Date(finUtc.getTime() + 5 * 60 * 60 * 1000);

Y listo!

Ten en cuenta que si haces test de manera local, las cuentas no te van a dar.

Categorías
Cloud Firebase Google Cloud

Cómo configurar los backups de Firestore desde la consola de gcloud

Antes que nada, toda la documentación oficial está en: https://firebase.google.com/docs/firestore/backups

Instalar la consola para Google Cloud

Para comenzar, se requiere tener instalada la consola de gcloud. En este link https://cloud.google.com/sdk/docs/install?hl=es-419 podrás descargar los instaladores y ver las instrucciones para la instalación. Una vez instalada, se podrán configurar los proyectos.

Categorías
Google Cloud

Cómo gestionar proyectos con gcloud, respaldar firestore y corregir el error CORS

A Abril del 2024, ya existe una manera un poco más simple de configurar los backups. Ver: https://webintegral.com.co/blog/como-configurar-los-backups-de-firestore-desde-la-consola/

gcloud permite gestionar los proyectos Google Cloud. ¡En serio! Cosas como respaldar bases de datos (firestore) o similares, son más fáciles de hacer aquí.

Para hacerse la vida más fácil, se pueden crear ‘configuraciones’ que se pueden activar una a la vez para no tener que definir cada vez en que proyecto se está trabajando.

Categorías
Cloud Firebase Google Cloud

Como crear un bucket en Google Cloud

Categorías
Cloud Google Cloud Wordpress

Notas sobre WordPress en Google Cloud con Bitnami

Lo primero es que lo más cerquita a Colombia son las zonas us-east1.

En bitnami el usuario root de la base de datos es root y la contraseña es la misma del usuario admin de wordpress, que sale como Admin password (Temporary) en el panel de la instalación en Google Cloud. Cómo bitnami está configurado para solo permitir el acceso a mysql vía ssh, entonces no es un problema de seguridad que el usuario sea root, pero si es sano cambiar la contraseña por lo menos.

Categorías
Cloud Firebase Google Cloud

Como correr el Emulador de Firebase con datos del prod y mover datos entre proyectos

Lo primero que diré es que Google Cloud Console tiene herramientas 2 herramientas importantes:

Firestore > Import/Export: para hacer backups y restablecer los datos de firestore.

Cloud Storage: Para administrar los archivos de los backups.

Categorías
Angular Dev Firebase

Cómo resolver el error @firebase/firestore: Firestore (8.2.2): FIRESTORE (8.2.2) INTERNAL ASSERTION FAILED: Unexpected state en Angular con Firebase

El error @firebase/firestore: Firestore (8.2.2): FIRESTORE (8.2.2) INTERNAL ASSERTION FAILED: Unexpected state no está muy bien documentado y se presenta cuando uno esta depurando una app en Angular con Firebase, utilizando Google Chrome. Está relacionado con la opción enablePersistence y se resuelve abriendo la consola de depuración del navegador y en la pestaña Application, checkear la opción IndexedDB y borrar los datos.

Categorías
Angular Dev Firebase TypeScript

Cómo contar registros fácil y rápido en firebase

Partiendo de que ya se tenga un proyecto en Typescript con Firebase configurado, basta con crear la siguiente función:

Categorías
Angular Dev Firebase TypeScript

Adaptador para un selector de fechas en Angular

Firebase entrega TimeStamps, no fechas, por lo que toca hacer la conversión respectiva. Pero es posible implementar una directiva que resuelva este problema así:

Categorías
Angular Cloud Dev Firebase TypeScript

Cómo utilizar el emulador de Firebase sin sufrir en el intento

Este post tiene como origen divertidos problemas que hemos tenido. Recomendamos solo habilitar los Emuladores necesarios. Hemos tenido algunos líos, en especial con el Emulador Pub/Sub.

Para comenzar, es necesario tener instalado Node.js 10.13 o mayor y verificar que se tiene la última versión de firebase-tools con el siguiente comando:

npm install -g firebase-tools

Asumiendo que firebase ya está corriendo y funcionando, entonces lo siguiente es inicializar el emulador: