Por: Juan Andrés Núñez
Juan Andrés Núñez - juanwmedia

Especialista en tecnologías Web. Me dedico a enseñar desarrollo Web moderno a cualquier persona (físicamente en clase y a través de Internet) desde una perspectiva holística: teniendo en cuenta las competencias técnicas necesarias, junto a las habilidades personales o soft skills. Tienes más información en mi Web.

  • Es hora de utilizar las Firebase Cloud Functions en algo un poco más interesante: conectándolas con Cloud Firestore.
  • Por ejemplo vamos a escuchar cuando se creen nuevos mensajes en VueTalk y a sustituir la palabra "perro" por "gato" a través de una expresión regular.
  • Debemos incorporar también el Admin SDK para futuras funciones ya que nos permite acceder a cualquier servicio de la plataforma sin someterse a las reglas de seguridad.
  • A través de la propiedad firestore del objeto functions podemos escuchar cuando se crea (o actualiza, o elimina) un documento y actuar en consecuencia usando los parámetros snapshot, que contiene información del documento accedido y context, que contiene información de la función en sí.
  • Una situación muy común que debes tener en cuenta es que las funciones pueden ser llamadas más de una vez, por lo que podemos comprobar si se ha realizado algún cambio y si no es así retornar nulo para finalizar la función. Esto es importante ya que siempre debes retornar algo desde una Cloud Function, de lo contrarió la función entraría en un timeout.
const admin = require('firebase-admin')
admin.initializeApp()
const regex = /perro/gi

exports.replaceDogs = functions.firestore
  .document('/rooms/{room}/messages/{message}')
  .onCreate((snapshot, context) => {
    const original = snapshot.data().message
    const replaced = original.replace(regex, 'gato')
    if (original === replaced) {
      return null // Infinite loop protection
    }
    return snapshot.ref.update({ message: replaced }) // Always return something
  })

Presentación


Firebase Auth


Cloud Firestore 🔥


Cloud Storage 🗄


Cloud Functions ☁


No te pierdas ninguna novedad

Escuela Vue en Twitter

Participa en la Comunidad Escuela Vue

Comunidad Escuela Vue