Firebase Functions - Monitorando alterações no Realtime Database

Descubra como usar o Firebase Functions para monitorar mudanças no Realtime Database e executar ações automáticas em resposta a alterações

Firebase Functions - Monitorando alterações no Realtime Database

Olá meus Unicórnios! 🦄✨

Este é um recurso extremamente interessante, ele permite criar uma função, que será acionada quando alguma alteração acontecer em um nó do Realtime Database.

Para este tutorial, iremos utilizar as funções e base criadas no tutorial anterior:

Firebase Functions - Utilizando o Realtime Database
Passo a passo para usar Firebase Functions com Realtime Database para gerenciar usuários, desde o registro até a exclusão e listagem de dados

Iremos precisar utilizar a versão "v1" da dependência "firebase-functions":

const fireFunctions = require("firebase-functions/v1");

Para criar funções que monitoram o Realtime Database, iremos utilizar o "database" no "fireFunctions", passando o nó que queremos monitorar e os eventos que queremos monitorar:

exports.MonitorarUsuarios = fireFunctions.database
.ref("/usuarios/{CodigoUsuario}/")
.onWrite(async (change, context) => {

Aqui podemos monitorar outros eventos também:

  • onWrite: Acionado quando qualquer modificação ocorre em um registro (Criação/Atualização/Exclusão)
  • onCreate: Acionado quando um novo registro é criado
  • onUpdate: Acionado quando um registro existente é editado
  • onDelete: Acionado quando um registro é removido

No elemento "change", é retornado como estava antes e como esta agora o registro:

const InfBeforeData = change.before.val();
const InfAfterData = change.after.val();

Para teste, iremos fazer um Axios quando uma alteração for realizada:

exports.MonitorarUsuarios = fireFunctions.database
.ref("/usuarios/{CodigoUsuario}/")
.onWrite(async (change, context) => {

    const InfBeforeData = change.before.val();
    const InfAfterData = change.after.val();

    const response = await axios.post("https://webhook.site/1098947a-afcf-4a89-a5b6-fb89f543a81c", InfAfterData, {
    headers: {
    'Content-Type': 'application/json',
    }
    });

});

Para teste, iremos alterar o Usuário "1", utilizando a função "RegistraUsuario" que criamos no tutorial anterior.

Quando uma alteração for identificada, a função será acionada e o Axios ira notificar o "webhook.site":

Por hoje é só, meus unicórnios! 🦄✨

Que a magia do arco-íris continue brilhando em suas vidas! Até mais! 🌈🌟