Integrando o Cloud Firestore com o Cloud Functions e gerando um PDF.

Pedro Barros
6 min readJun 28, 2019
Estrutura básica de funcionamento.

Esta é a primeira série de artigos em que começo falando sobre alguns serviços que a Google oferece e nós, desenvolvedores, às vezes, não a conhecemos e acabamos deixando passar.

Um amigo desenvolveu um aplicativo e para guardar os dados foi utilizado o banco de dados (Cloud Firestore) e durante uma conversa ele teve a necessidade de gerar PDF para algumas funcionalidades.

Por o Firebase ser um Backend-as-a-Service BaaS, onde não era cogitado, de maneira alguma utilizar um servidor somente pra gerar o PDF, então fui atrás de outros caminhos para ajudá-lo.

Foi aí que descobri um serviço muito bacana e melhor ainda, DE GRAÇA. Então, sem mais delongas, vamos ao tutorial de como construir o PDF com a integração do Cloud Firestore + Functions.

Vem comigo.

Cloud Firestore

O Cloud Firestore é uma banco de dados NoSQL (Not Only SQL) que te permite flexibilidade e escalabilidade para desenvolvimento de aplicações.

Mas Pedro, me fale quais as vantagens de utilizar esse banco?

Bom, segundo o próprio website deles, essas são algumas vantagens abordadas:

  1. Manter os dados em sincronia em aplicativos cliente por meio de listeners em tempo real;
  2. Oferecer suporte off-line para dispositivos móveis e Web para que você possa criar aplicativos responsivos que funcionem independentemente da latência da rede ou da conectividade com a Internet;
  3. E o melhor dentro do contexto desse artigo: oferecer integração perfeita com outros produtos do Firebase, como exemplo, o Cloud Functions.

Porém, até o dia de hoje, o Cloud Firestore encontra-se na sua versão Beta, mas isso não é um problema, pois sua API está bem evoluída.

“O Cloud Firestore está atualmente na versão Beta. A disponibilidade de recursos e o suporte a integrações e plataformas de produtos continuarão a melhorar à medida que o produto amadurece. Para mais informações sobre as limitações existentes no Cloud Firestore, consulte a documentação de limites e cotas.”

Configurando o Firestore

Primeiramente, será necessário abrir o CONSOLE do firebase e procurar o menu de serviços , selecionar a opção DATABASE e ao seu lado direito clicar em CRIAR BANCO DE DADOS.

As imagens a seguir mostram a sequência para criação do banco de dados. Na imagem 1, foi colocado o modo de teste para que seja configurado com mais rapidez, mas em ambiente de produção é necessário, e correto, iniciar no modo bloqueado.

Imagem 1 — Definição da regras de proteção dos dados.

Na imagem 2, é definido o local onde os dados serão armazenados. Por default é colocado o que foi selecionado no processo de criação do projeto.

Imagem 2 — Local onde será construído o banco de dados.

Nas imagens 3 e 4, serão o local de criação e visualização das coleções e documentos da sua database. Para criar uma coleção basta clicar em Adicionar coleção e informar o nome da mesma. Na segunda parte é para adicionar documentos a coleção, o processo também é simples: Adicionar documento e informar os valores (Tipo, Chave e Valor).

Imagem 3 — Criação de uma nova coleção
Imagem 4— Visualização das coleções e seus documentos

Enfim, o database foi criado com SUCESSO!

Cloud Functions

Com o Cloud Functions você pode executar um código de back-end armazenado em servidor na nuvem do Google, sem a necessidade de gerenciar e controlar servidores, tudo pronto para você! Vamos aprender a configurá-lo e utilizá-lo!

Configurando o Cloud Functions

Vamos para a etapa número 2, onde será a configuração do nosso CLOUD FUNCTION. Agora, será necessário selecionar a opção FUNCTIONS e ao seu lado direito, clicar em COMEÇAR.

Podemos iniciar o processo de configuração da function(s) que será(ão) disponibilizado(s). Primeiramente, precisamos instalar as ferramentas de linha de comando do firebase através do NPM.

npm install -g firebase-tools

No dashboard do firebase aparecerá a mensagem “AGUARDANDO A SUA PRIMEIRA IMPLANTAÇÃO”, quando sua primeira function for enviada, essa mensagem desaparecerá e mostrará detalhes sobre a function(s).

Ainda no terminal, será necessário fazer o login com o firebase, para isso basta executar a instrução a seguir:

firebase login

Após isso, ele perguntará se você permitirá que seja coletada as informações anônimas de uso de CLI e de relatórios de erros. Fica a seu critério, mas no meu caso, optei por SIM.

Dando continuidade, será necessário executar mais dois comandos: o primeiro para INICIAR O PROJETO e o segundo para implantar a estrutura básica para servir uma CLOUD FUNCTIONS.

firebase init

Após iniciar o projeto, serão feitas algumas perguntas básicas de configuração, siga a mesma linha da imagem subsequente.

Dentro da pasta, será criado uma estrutura, como a imagem seguinte, o arquivo principal pra function é o index.js, pois neste será disponibilizado a função que será executada.

Dentro da pasta functions é preciso instalar as dependências do projeto, execute a instrução posterior:

npm install

Para geração do PDF, utilizaremos a PDFKIT que é uma biblioteca de geração de documentos em PDF para o Node e o navegador facilitando a criação de documentos complexos. O processo de instalação é bem simples. Basta executar o comando abaixo na mesma pasta:

npm install pdfkit

Partindo para o arquivo index.js, vamos preparar o código:

Na linha 01, 02 e 04: Carregam os módulos pdfkit, firebase-functions e firebase-admin.

Na linha 05 a 10: São configurados os parâmetros necessários para iniciar o firebase.

Na linha 12: Chamado o método para utilizar o Firestore e atribuído a uma variável chamada db.

Na linha 15: Assinatura da Cloud Function que recebe dois parâmetros, o primeiro é referente a requisição, então, serão disponibilizado todos os dados expostos da requisição e o segundo é o de resposta, ou seja, todos os dados e métodos para responder as requisições realizadas.

Na linha 16 a 19: Criado a instância para manipular/construir o PDF.

Na linha 21 a 30: Percorrendo a coleção do banco e disponibilizando no PDF.

Por fim, para fazer o deploy da function, é necessário executar o comando abaixo:

firebase deploy

Será realizado o processo do deploy dos arquivos conforme a imagem:

No terminal, o link de acesso a function e o dashboard serão disponibilizados também.

Após acessar o link, o PDF será gerado!

Gostou do texto? Agora você já tem uma ideia básica de como utilizar dois serviços robustos do firebase e disponibilizar em um biblioteca muito simples para geração de PDF. Caso você tenha alguma dúvida ou sugestão, não deixe de entrar em contato pelo email pedroedson12@hotmail.com, Telegram ou se preferir nos comentários. Ficarei agradecido em conversar contigo!

Até a próxima!

--

--

Pedro Barros

Desenvolvedor de Software, apaixonado por novos conhecimentos, desafios e futebol.