EventoObtenha 50% de desconto no seu ingresso para MongoDB.local Londres em outubro 2. Use o código WEB50Saiba mais >>
Desenvolvedor MongoDB
Central de desenvolvedor do MongoDBchevron-right
Idiomaschevron-right
JavaScriptchevron-right

Como desenvolver um aplicativo web com funções sem servidor da Netlify e MongoDB

Nic Raboy6 min read • Published Jun 22, 2022 • Updated Aug 30, 2024
Node.jsAtlasJavaScript
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Como mencionei em um tutorial anteriordo,sou um grande fá da Netlify e dos serviços que ela oferece aos desenvolvedores - meu serviço favorito é a hospedagem de sites estáticos e as funções sem servidor. Ao combinar os dois, você pode implantar um site da web ou aplicativo da web complexos com um back-end, sem nunca se preocupar com infraestrutura ou design de API potencialmente complexo.
Então, como isso funciona com um banco de dados como o MongoDB?
Se você já se interessou por funções sem servidor antes, deve estar ciente de que elas nem sempre estão disponíveis para consumo. Muitas funções sem servidor existem por um período de tempo definido e são desligadas até serem executadas novamente. Com isso em mente, a conexão com um banco de dados pode nem sempre estar disponível como estaria em um aplicativo criado com o Express Framework, por exemplo. Você pode estabelecer uma conexão toda vez que uma função é chamada, mas corre o risco de muitas conexões, o que pode sobrecarregar seu banco de dados.
Então, o que você faz?
Neste tutorial, vamos ver como criar e implantar um aplicativo web simples usando funções da Netlify e MongoDB Atlas. Para este tutorial específico, usaremos o driver Node.js para MongoDB, mas a Netlify e o MongoDB também suportam o uso de outras linguagens e drivers.

Os requisitos

Há algumas coisas que devem estar prontas antes de iniciar este tutorial.
  • O Node.js 15+ deve estar instalado.
  • Um clusterdo MongoDB Atlas deve ser distribuído e configurado com funções de usuário e regras de rede adequadas.
  • Você deve ter uma conta Netlify.
  • Você deve ter o Netlify CLI instalado e configurado.
Tudo o que fizermos neste tutorial pode ser feito de forma gratuita. Você pode usar o nível gratuito para sempre do MongoDB Atlas, que é um cluster do tamanho M0. Você também pode usar o plano gratuito que a Netlify oferece.
Importa referir que, se você preferir uma experiência totalmente sem servidor, o MongoDB Atlas também oferece instâncias sem servidor — um banco de dados totalmente sem servidor que é dimensionado elasticamente de acordo com a demanda. Não exploraremos instâncias sem servidor neste tutorial, mas se você quiser saber mais, consulte este artigo.
Se precisar de ajuda para começar a usar o cluster do MongoDB Atlas, confira o tutorial anterior que criei sobre o assunto.

Crie um novo projeto Netlify com o Netlify CLI

Para manter este tutorial simples e fácil de entender, vamos trabalhar em um novo projeto. Embora você não precise necessariamente usar a CLI para fazer o trabalho, será mais fácil para este exemplo.
Supondo que a CLI Netlify esteja instalada, execute o seguinte comando para criar um novo projeto:
Neste exemplo, não usaremos os recursos de integração contínua que você obteria ao conectar o GitHub e similares. Certifique-se de seguir as instruções que a CLI apresenta a você a partir do comando acima.
Não criaremos nenhum arquivo de projeto específico até que avancemos no tutorial.

Crie uma função Netlify que interaja com MongoDB

A estrela deste tutorial estará por perto, incluindo o MongoDB Atlas em sua função Netlify. Conforme mencionado anteriormente, é necessário levar em consideração o estado da função para evitar a tentativa de acesso a um banco de dados sem conexão ou o estabelecimento de muitas conexões.
Com isso em mente, podemos fazer o seguinte com a Netlify CLI:
Siga as instruções quando solicitado. Para este exemplo, usaremos JavaScript em vez de TypeScript ou Golang. Embora não seja muito importante, pois faremos alterações significativas depois, selecione hello_world como o modelo de função que você deseja usar.
Como usaremos o driver Node.js do MongoDB, precisamos instalá-lo em nosso projeto. Execute o seguinte na linha de comando, na raiz do projeto:
As funções sem servidor da Netlify poderão acessar os módulos NPM na raiz do projeto.
Se você manteve o caminho de função padrão, abra o arquivonetlify/functions/get_movies.js e adicione o seguinte código JavaScript:
Então, o que está acontecer no código acima?
A primeira coisa que estamos fazendo é criar um novo cliente MongoDB usando uma string URI que estamos armazenando dentro de nossas variáveis de ambiente. Embora você possa codificar esse URI, sua melhor aposta é mantê-lo em uma variável de ambiente, pois os usaremos em uma etapa posterior deste tutorial.
Talvez a frase mais interessante aqui seja a seguinte:
Se você já trabalhou com o driver Node.js do MongoDB antes, provavelmente já o usou com um await ou similar. Não queremos bloquear nossa função na área global. Esta área antes da funçãohandler será executada somente quando a função iniciar. Sabemos que a função não será necessariamente encerrada após uma execução. Com esse conhecimento, podemos usar o mesmo cliente enquanto essa função específica existir, reduzindo o número de conexões existentes.
Dentro da funçãohandler, podemos tentar resolver nossa promessa de cliente, obter um identificador para o banco de dados que queremos usar e obter um identificador para a collection que queremos usar. Para este exemplo, estamos armazenando o nome do banco de dados e o nome da collection em uma variável de ambiente.
Vamos expandir nossa função para realmente fazer algo útil. Altere o código JavaScript para que fique parecido com o seguinte:
Para essa função específica, estamos usando nossa conexão para encontrar todos os documentos em nossa collection, limitando o conjunto de resultados aos documentos 10 e retornando os dados para quem quer que tenha executado a função. Nosso exemplo é técnicamente baseado em documentos de filmes, mas nosso código não reflete nada tão específico.

Usar a função Netlify de um arquivo HTML com JavaScript

Então, temos uma função sem servidor para consultar nosso banco de dados MongoDB Atlas. Vamos juntá-lo a algumas das outras ofertas do Netlify, principalmente a hospedagem de sites.
Na raiz do nosso projeto Netlify, crie um arquivo index.html com a seguinte marcação:
Não precisamos nos preocupar em fazer nada sofisticado do ponto de vista da interface do usuário neste exemplo.
No HTML e JavaScript acima, estamos definindo um elemento de lista não ordenada de espaço reservado. No JavaScript, estamos buscando nossa função sem servidor, percorrendo os resultados e adicionando cada um de nossos itens como itens de lista à lista não ordenada. Como estamos presumindo que estamos usando dados de filme, estamos adicionando apenas o título do objeto de filme à lista.
Novamente, nada sofisticado, mas prova que nossa função funciona.

Implemente a função Netlify com website na nuvem

Temos uma função, temos um site e estamos praticamente prontos para implantar. Antes de fazermos isso, vamos garantir que tudo funcione localmente.
Usando a Netlify CLI, execute o seguinte a partir da raiz do seu projeto:
O comando acima deve servir a função e o site localmente e, em seguida, abrir um navegador para você. Se você tiver problemas, verifique o seguinte:
  • Você se lembrou de definir suas variáveis de ambiente primeiro?
  • O seu IP local é adicionado ao seu MongoDB Atlas cluster?
Para ser sincero, esses dois itens me chamaram a atenção, por isso achei que valia a pena registrá-los.
Supondo que você tenha tudo funcionando em seu ambiente local, podemos nos concentrar na implantação na Netlify.
A primeira coisa que queremos fazer é criar nossas variáveis de ambiente. Isso pode ser feito no painel on-line da Netlify ou diretamente com a Netlify CLI. Para este exemplo, usaremos a CLI.
Na linha de comando, execute o seguinte:
O comando acima define três variáveis de ambiente. Você vai querer trocar o URI pelo do seu próprio cluster. Você pode obter essas informações no painel do MongoDB Atlas.
Ligar ao MongoDB Atlas
Ligar ao MongoDB Atlas
As outras duas variáveis, que representam o banco de dados e a collection, estão usando o conjunto de dados de amostra. Você pode alterá-los para o que quiser.
Com as variáveis definidas, podemos implantar o projeto. Execute o seguinte comando na linha de comando:
Pode levar um pouco de tempo para que o processo de construção seja ativado remotamente, mas, quando terminar, você deverá ter um website bem básico que consuma informações de uma função da Netlify.
É importante observar que você ainda precisa adicionar as regras adequadas de acesso à rede ao MongoDB Atlas para permitir conexões de uma função do Netlify.

Conclusão

Você acabou de ver como usar oNetlify Functions com o driver Node.js do MongoDB para criar um website com um backend sem servidor.
Lembre-se de que, ao trabalhar com funções sem servidor, você precisa estar ciente de que suas funções nem sempre estão disponíveis para reutilizar uma conexão. Você também deve estar ciente de que a conexão a um banco de dados diretamente dentro de um manipulador de função pode estabelecer muitas conexões. Quando feito corretamente, você terá uma poderosa função sem servidor que pode aproveitar ao máximo o MongoDB.
Se você estiver interessado em outro exemplo de função sem servidor, confira meu tutorial intitulado Adicionar uma seção de comentários a um site do Eleventy com o MongoDB e a Netlify para obter mais ideias.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Como fazer semantic search no MongoDB utilizando o Atlas Vector Search


Sep 18, 2024 | 8 min read
Tutorial

Implementar autenticação por e-mail/senha em React


Apr 02, 2024 | 8 min read
Início rápido

Introdução ao MongoDB e Mongoose


Aug 05, 2024 | 9 min read
Artigo

Como habilitar o teste local e automático de recursos baseados na pesquisa do Atlas


Jun 12, 2024 | 8 min read
Sumário