1 of 44

RECUERDA PONER A GRABAR LA CLASE

2 of 44

¿DUDAS DEL ON-BOARDING?

3 of 44

FIREBASE II

Clase 13. REACT JS

4 of 44

  • Insertar y actualizar información usando Firestore.
  • Flujos de control.

OBJETIVOS DE LA CLASE

5 of 44

Firebase: es un servicio provisto por Google para satisfacer las distintas necesidades que puede tener una aplicación y su ciclo de desarrollo

GLOSARIO:

Clase 12

6 of 44

MAPA DE CONCEPTOS

7 of 44

MAPA DE CONCEPTOS CLASE 13

Firebase II

Almacenando en Firestore

Recapitulación de arquitecturas

Organización

Tipos de datos

Modificando y creando

Creación

Actualizando un documento

Batch Update (lotes de escritura)

8 of 44

Clase 13

Firebase II

Clase 12

Firebase I

Clase 14

Workshop

CRONOGRAMA DEL CURSO

EJEMPLOS EN VIVO

EJEMPLOS EN VIVO

CREA TU ITEM COLLECTION

ITEM COLLECTION

MODERA TUS ORDERS

ITEM COLLECTION II

OPTIMIZA EL CÓDIGO

CREA TU MARKDOWN

REVISA Y SUBE TU TRABAJO

ENTREGA DEL PROYECTO FINAL

9 of 44

FIREBASE II

10 of 44

RECAPITULACIÓN DE

ARQUITECTURAS

11 of 44

Si venimos de los desarrollos clásicos, tenemos una arquitectura que es la más conocida. Puede estar vinculada a un patrón como el siguiente:

SPA

API

Base de datos

Browser

Backend

SQL, noSQL, etc

corre en el

provista por el

Accede y guarda vía

consume

para llegar a

12 of 44

La api decide quién accede, implementa su modelo de seguridad y determina la respuesta

13 of 44

SPA

Firebase services

Browser

Firestore

corre en el

Accede y guarda vía

Firestore decide quién accede mediante mecanismos propios y filtros de seguridad

14 of 44

ALMACENANDO EN

FIRESTORE

15 of 44

Firestore tiene ciertos límites en cuanto a cómo organizamos la información. Veamos los distintos aspectos, para hacerlo de manera eficiente.

FIRESTORE Y EL ALMACENAMIENTO

16 of 44

ORGANIZACIÓN

17 of 44

En Firestore, el almacenamiento es de tipo no estructurado/noSQL:

  • No hay tablas.
  • No hay filas/records.

FIRESTORE

18 of 44

En firestore hay documentos.

  • Tienen pares key/value.

  • Estos key value pueden tener ciertos tipos de datos.

  • Tienen un límite de 1MB.

FIRESTORE: DOCUMENTOS

19 of 44

Los documentos pueden ser complejos y anidados, pueden contener arrays, fechas (timestamps), números, y otros objetos (maps)

Juega y experimenta con el editor online y descubre más datos!

FIRESTORE: DOCUMENTOS

20 of 44

  • Son contenedores de documentos.
  • Los documentos se agrupan obligatoriamente dentro de ellas.
  • Los mismos documentos pueden tener colecciones dentro.

Borrar un documento no elimina sus sub-colecciones ¡debes hacerlo manualmente!

FIRESTORE: COLECCIONES

21 of 44

Si bien tienen máximo de 1MB, esto puede ser bastante para registros de texto, y aparte podemos definir hasta 100 niveles de sub-colecciones.

Esto permite multiplicar exponencialmente el tamaño bruto de un documento.

FIRESTORE: COLECCIONES

22 of 44

TIPOS DE

DATOS

23 of 44

Cuidado: arrays no pueden tener sub-arrays entre sus elementos

FIRESTORE: TIPOS DE DATOS

24 of 44

MODERA TUS ORDERS

Usa tu tus items del cart para modelar tu orden.

25 of 44

¡A PRACTICAR!

Usa tu tus items del cart para modelar tu orden al siguiente formato:

{ buyer: { name, phone, email }, items: [{id, title, price}], total }, si todavía no creaste el formulario de compra puedes usar un objeto hardcodeado de tipo { name, phone, email }.

Cuentas con 30 minutos para realizar la actividad.

26 of 44

BREAK

27 of 44

¡Ya estás llegando al fin de la cursada! �Recordá que luego de la corrección de tu proyecto final, se notificará por Slack y email si quedaste en el TOP10��No cuelgues, que tenés hasta 2 semanas desde que te nofificamos para solicitar los beneficios.

¡5/10 MINUTOS Y VOLVEMOS!

28 of 44

Tienes tu CartProvider.

FIRESTORE: CHECKLIST CHALLENGE

Puedes navegar de tu List a tu Detail.

Puedes clickear en el cart.

Puedes agregar items a tu cart.

Conectaste el listado y el detalle a Frebase.

¡Conectemos la compra y generemos la orden!

29 of 44

MODIFICANDO

Y CREANDO

30 of 44

CREACIÓN

31 of 44

Debemos generar una referencia a la colección, y crear el objeto que queremos crear en Firestore.

FIRESTORE: PREPARAR DOCUMENTO

La creación es bastante sencilla, utiliza el método <collection>.add(<object>)

32 of 44

Si necesitamos agregar una fecha, podemos usar la librería timestamp de firestore agregando su import en el js.

FIRESTORE: FORMATO DE FECHAS

Firestore almacena nano y micro segundos

33 of 44

El método add de esa colección devuelve una promise. Si todo sale bien el then devolverá el id auto-generado del del nuevo documento, de otro modo pasará por el flow de error.

FIRESTORE: CREAR DOCUMENTO

La creación es bastante sencilla, utiliza el método <collection>.add(<object>)

34 of 44

FIRESTORE: VERIFICA TU CREACIÓN

Firestore crea el id por nosotros si utilizamos el método add

¡Verifica en la consola que se haya creado!

35 of 44

ACTUALIZANDO

UN DOCUMENTO

36 of 44

Puedo darle únicamente los campos que quiero actualizar. Firestore combinará este nuevo campo y dejará lo que haya habido previamente

FIRESTORE: ACTUALIZAR UN DOCUMENTO

actualizarStock es una promise. Ejecútala para ver el resultado de la operación

37 of 44

BATCH UPDATE

(LOTES DE ESCRITURA)

38 of 44

Puedes usar una operación batch para actualizar muchos documentos en una misma operación

FIRESTORE: ACTUALIZAR UN LOTE DE DOCUMENTOS

Pasos:

  1. Obtener una instancia de firestore.
  2. Obtener un batch.
  3. Ejecutar las operaciones requeridas.
  4. Ejecutar el commit().then()

¡Recuerda que commit devuelve una promise!

39 of 44

‘in’ es un operador que me permite

obtener un conjunto de ítems por su id

Si consultas un query puedes usar el .ref del snapshot

FIRESTORE: ACTUALIZAR UN BATCH A PARTIR DE OTRO QUERY

40 of 44

ITEM COLLECTION II

conecta Firestore a tu APP para escrituras.

11

41 of 44

ITEM COLLECTION II

Formato: link al último commit de tu repositorio en GitHub. Debe tener el nombre “Idea+Apellido”.

>> Consigna: crea tu colección de órdenes.

>>Aspectos a incluir en el entregable:

  • Utiliza las operaciones de inserción para insertar tu orden en la colección y dale al user su id de orden auto-generada
  • Crea los mappings para poder grabar un objeto del formato �{ buyer: { name, phone, email }, items: [{ id, title, price }], date, total }

Pista: Puedes controlar los stocks con multi-gets utilizando los itemId de tu cart.

42 of 44

¿PREGUNTAS?

43 of 44

Resumen de lo visto en clase hoy:

  • Firebase.
  • Firestore.
  • Queries.

¡MUCHAS GRACIAS!

44 of 44

OPINA Y VALORA ESTA CLASE