Crud Firebase Angular
Crud Firebase Angular
firebase
Obtener la informacion del result api de firebase.
Temas a tratar:
Uso del modulo HTTP
Servicios restful de firebase
POST
GET
DELETE
PUT
Configuraciones de la consola de firebase.
o Para empezar nuestro proyecto vamos a crearlo desde la consola le decimos que no cree el
archivo de rutas y que trabajaremos css, tambien copiamos los cdn de bootstrap y de
fonstawesome en el archivo index.html.
o Vamos a crear nuestro sistema de rutas abrimos la terminal
o ng g m appRouting - - flat para que lo cree al mismo nivel de mi carpeta app
o m es de module
o Vamos a crear dos componentes dentro de una carpeta llamada pages o como usted desee el
primer componente lo llamamos personas
ng g c pages/persona y ng g c pages/personas, en persona vamos a registrarla y en personas
vamos a buscar un registro en especifico, configuramos el archivo de rutas quedando de la
siguiente forma:
o Recuerde que tambien tengo un archivo app.module.ts que es nuesgtro segundo archivo de rutas
y lo debo importar a este
Observemos que las rutas configuradas funcionan, en el app.component.html vamos a llamar a
nuestro router-outlet que es el que nos carga la configuracion inicial de nuestro proyecto. Se nos
carga la pagina personas works y si quiero mirar la pagina persona en la barra de navegacion
digito persona/id y nos carga la pagina persona
Con esto ya podmeos observar que la pagina no carga de golpe si no con mas suavidad.
Pagina personas
Primero vamos a crear un titulo para nuestra pagina de personas con un boton y utilizando los
estilos de fontsawesome.
En el modelo creo los campos que voy a trabajar en la base de datos, tambien inicializo el estado
de la persona en true ya que aca vamos a trabajar con trabajando o pensionado.
Vamos a abrir persona.component.html y persona.component.ts y vamos a crear una propiedad
persona e inicializamos el objeto persona = new PersonaModel
Ahora abramos el persona.component.html, asociemos cada campo con las propiedades de la
clase y trabajar el submit del formulario y recuerde que vamos a trabajar con formularios en el
app.module.ts debemos importar el FormsModule
App.module.ts
Al hacer los cambios se hace el submit con el del html, en el formulario vamos a llamar el
metodo (ngSubmit) con una funcion guardar( f )
2
Despues de dar click en crear base de datos se nos abre una ventana emergente y seleccionamos
empezar en el modo de prueba y habilitar
En la seccion de datos voy a crear mi tabla y le doy clic en añadir
Como vamos a conseguir todo el arreglo de personas, damos clic en personas y copiamos la url
que se genera y en una nueva pestaña del navegador le colocamos al final .json
Cada vez que agregamos un dato a la BD y recargamos nuestro json nos muestra el dato
agregado.
click
HTTP – POST
creando un nuevo registro en firebase
Vamos a centrar la logica por medio de un servicio
Como voy hacer peticiones http debo importar en el archivo app.module.ts el HttpClientModule
Ahora paso por el metodo pipe coloco los operadores por el map la respuesta de mi peticion.
Cuando yo guardo la persona en el formulario en el campo firebase id se muestra el id de la
persona creada
HTTP – PUT
ACTUALIZAR EL REGISTRO
Para actualizar vamos al service, creemos un metodo actualizarHeroe.
Si volvemos a dar clic en el boton guardar genero de que se me genere un id dentro de la base de
datos y esto no seria lo mas conveniente entonces debo hacer una decisión para saber si el id
esta vacio o ya viene con algun dato. En el persona.component.ts en la funcion de guardar hago
un if donde pregunto si es diferente de vacio actualizo y si no guardo, dos cambios para que
cuando actualize no me genere un nuevo id sobre las propiedades de la persona.
Informacion del estado de las peticiones
Avisarle al usuario cuando se guarda o se actualiza, vamos a generar unas alertas por medio de
sweetalert2, recuerde que importamos el modulo de sweetalert a persona.component.ts y vamos
a mejorar el persona.component.ts donde las alertas me diran si se actualizo correctamente.
Lo primero es copiar la librería del sweetalert a nuestro proyecto, despues importar el modulo de
sweetalert2
En la funcion guardar vamos a centralizar las peticiones de guardar o actualizar
HTTP – GET
obtener un listado de todas las personas
Trabajemos en el listado de personas. Firebase nos trae un arreglo pero este no nos va servir para
mostrar la informacion en la tabla y genera un error si los metemos en un ngFor lo cual no nos
sirve entonces vamos a hacer los cambios respectivos empezando en personas.component.ts
importamos el service
Ahora en el service vamos a hacer que los datos almacenados en la BD de firebase se muestren
como un arreglo independiente
Vamos a hacer la manipulacion de la html, primero vamos a crear una variable en
personas.component.ts donde esta variable va a invocar a personaModel de tipo arreglo
Pero tenemos un problema que al dar clic en editar en la url me carga el id a modificar pero no
me estan cargando los datos en el formulario
Necesitamos un servicio para obtener una persona por id en el services.
Como podemos ver cuando eliminamos este se borra de la bd pero aun se ve en el formulario,
vamos a arreglarlo
Para poder solucionarlo vamos a la funcion borrarPersona y agregamos el index que ya esta en
el ngFor (i)
Tambien oculto la alerta de no hay registros y que se muestre cuando en realidad no hay
registros.