Couchbase Capella

Crie um aplicativo de pesquisa com Netlify e Couchbase

A equipe do Couchbase DevRel tem trabalhado com o Clube do site ruim em freeCodeCamp materiais. 

O freeCodeCamp é uma organização sem fins lucrativos que consiste em uma plataforma interativa de aprendizado na Web, um fórum de comunidade on-line, salas de bate-papo, publicações on-line e organizações locais que pretendem tornar o aprendizado de desenvolvimento de software acessível a qualquer pessoa.

O Bad Website Club é uma comunidade on-line que ajuda novos alunos em sua jornada de programação.

Fizemos um streaming para mostrar aos alunos de fCC o que poderia acontecer com seus projetos em condições mais "reais". Começamos com o curso Responsive Web Design, pegamos alguns exemplos, como o formulário Survey (Pesquisa), os completamos e os colocamos em produção. Toda a série foi transmitida no YouTube, LinkedIn, Twitter e Twitch, e as gravações estão disponíveis nesta lista de reprodução do YouTube, se você quiser conferir: Novos fluxos do Couchbase: A partir de 31 de julho!

Eu estava transmitindo pessoalmente no Projeto de pesquisa. Nesta série de publicações do blog, mostrarei todas as etapas adicionais que você pode fazer: publicar o código no GitHub, implantar o Survey on-line com o Netlify e armazenar seu conteúdo no Couchbase Capella.

Etapa 1 - Criar um formulário HTML

Inspirando-me bastante no exemplo de pesquisa do FreeCodeCamp (copiar, colar e aparar), obtive o seguinte formulário HTML. Ele é um pouco mais simples do que o original.

O styles.css é exatamente o mesmo que o original. Abra aqui para ver o formulário de pesquisa em ação. Você pode abrir o em seu navegador, clique com o botão direito do mouse na página e você verá algo como Exibir fonte da página ou inspecionar. Clique nele e isso abrirá um painel que mostra o código da página. Enquanto estiver nessa exibição, você poderá clicar em um link como style.css ou clique no ícone estilos para visualizar o CSS aplicado a determinados elementos também.

Para testar esse exemplo de código, você pode primeiro clonar esse repositório no seu computador local usando o terminal ou pode baixá-lo como um arquivo zip.)

Screenshot of button in github where you can clone or download code

Acesse seu navegador e, na barra superior, selecione arquivo, abertoe, em seguida, selecione a opção index.html da pasta (ou pasta zip) que foi baixada. Dê uma olhada no URL do seu navegador, que mostra um caminho para um arquivo local. E você deve ver algo como isto, que não faz nada quando você clica em enviar.

The screenshot of the survey from created during the freecode camp Survery lesson

A questão então é: como implantá-lo na Internet, como fazer com que ele faça alguma coisa? Precisamos de algum código de backend para ser executado após o clique. E, em seguida, fazer com que esse código armazene o conteúdo do formulário no banco de dados.

Etapa 2 - Git, Github, Netlify

Vamos começar implantando esse formulário ao vivo na Internet. Para isso, usaremos o Netlify. A primeira coisa a fazer é verificar se temos o arquivo CLI da Netlify disponível e que estamos conectados. Se ele não estiver instalado, o caminho mais rápido é digitar em seu terminal:

Você encontrará mais detalhes na seção Documentos de introdução à Netlify.

Digitação versão netlify em meu terminal atualmente me dá netlify-cli/15.6.0 win32-x64 node-v18.5.0. Portanto, sei que ele está instalado e pronto.

Em seguida, a próxima coisa a fazer é digitar login na netlify em seu terminal. Você será direcionado para o formulário de login do Netflify.

Agora tudo deve estar pronto para passar para a fase de implementação. Mas só para ter certeza, vamos testar as coisas localmente. Porque é isso que a maioria dos desenvolvedores faz. Para isso, digite desenvolvimento da netlify em seu terminal.

Ele deve exibir o seguinte no terminal e abrir o formulário no navegador.

Se você der uma olhada na barra de URL do navegador novamente, verá que ela é diferente. Parece um endereço de site da Web, não um arquivo local. Parabéns, você acabou de executar seu primeiro servidor local, servindo seu arquivo HTML e CSS, usando Netlify dev! Você tem um site em execução em sua máquina. Agora vamos torná-lo acessível a todos na Internet, tanto o código-fonte quanto o próprio site.

Vá para o GitHub (ou GitLab, ou Heptapod, ou qualquer outra solução de hospedagem de código-fonte, existem outras por aí! Acesse https://github.com/new para o Github. Agora você está no assistente de criação do repositório. Eu só configurei minha organização, o nome do meu repositório e uma descrição, depois cliquei no botão Criar repositório botão.

A screenshot of Github's repository creation wizard

A screenshot of a newly intitialized Github repo

Ele fornecerá todas as instruções necessárias para converter sua pasta de trabalho em uma pasta git e vincule-o ao seu projeto do GitHub. Foi isso que digitei no terminal (você pode copiar e colar o texto abaixo no terminal ou pressionar Enter após cada linha do texto abaixo para executá-lo. Observe que será necessário alterar a linha 6 para que seja o URL do repositório do projeto) Observe que você terá que alterar a linha 6 para que seja o URL do repositório do projeto):

Esta é a saída do terminal resultante:

 

Agora, se eu voltar à página do Github e recarregá-la, verei o seguinte:

A screenshot of the github repository after an intial commit was pushed

Parabéns, seu código agora está disponível no Github, para que todos possam ver, aprender e contribuir. Agora é hora da produção! Vamos colocar esse site no ar 💪

Vá em frente e visite https://app.netlify.com/start/deploy. Isso o levará ao novo assistente de projeto do Netify. Você verá vários botões para ajudá-lo a começar, GitHub, GitLab, Bitbucket, AzureDevops. Vamos clicar no GitHub.

A screenshot of the Netlify Wizard for new project creation

Você verá algumas janelas solicitando que você vincule seu perfil do GitHub ao Netlify. Vá em frente e prossiga, e você será levado à página a seguir.

A screenshot of the second step of Netlify's project creation wizard after picking Github

O Netlify está me dizendo que não tenho nenhum aplicativo Netlify instalado em nenhuma organização do GitHub. Clique em Configurar o Netlify no GitHubEle abrirá uma janela pop-up solicitando que você selecione a organização do GitHub na qual deseja instalar o Netlify e o repositório ao qual deseja dar acesso.

A screenshot of Github's authorization matrix

Deixo o padrão e prossigo para a próxima etapa. De agora em diante, você deverá ver todos os repositórios em sua conta do GitHub.

A screenshot of Netlify's project List showing linked Github project

Deixarei o padrão e clicarei em Implementar meu projeto:

A screenshot of the default Netlify project configuration

 

Você verá um link para seu site recém-implantado na Internet, que para mim é https://jolly-sfogliatella-3e6c07.netlify.app/. A Netlify fornece um ambiente de sandboxes sob o netlify.app para que você possa implementar coisas sem ter seu próprio nome de domínio.

A screenshot of a newly created Project

Parabéns, seu site agora está no ar na Internet. Reserve um minuto para comemorar 🎉.

Agora, podemos vincular esse projeto Netlify digitando link netlify no terminal. Será oferecida uma lista de opções. Selecione a opção padrão, que deve ser Usar a origem remota atual do git (https://github.com/yourOrg/yourProject). Como você fez a implantação por meio do GitHub, o Netlify tem as informações do git do seu repositório e pode inferir qual projeto usar (e também, nesse ponto, você provavelmente tem apenas um projeto). Esta é a aparência do resultado para mim:

Podemos tentar algumas coisas agora. Vou adicionar um emoji 🐼 ao meu formulário, porque não. Em index.htmlEstou modificando a linha 9 a partir disso: <h1 id="”title”" class="”text-center”">Formulário de pesquisa</h1> para isso <h1 id="”title”" class="”text-center”">Formulário de pesquisa 🐼</h1>

Em seguida, salvo o arquivo e envio essas alterações para o Github. Em seguida, no terminal, digito netlify open:site:

Algo muito legal está acontecendo. Como seu repositório do GitHub está vinculado ao Netlify, uma nova implantação será feita automaticamente pelo Netlify. Portanto, ao abrir o site, você verá o Panda <3.

Nesse ponto, temos um repositório do Github que contém nosso código, que é integrado ao Netlify, que criará automaticamente uma nova implantação quando você enviar um novo código. E também temos um repositório netlify CLI em nossa pasta de trabalho. Estamos prontos para escrever o código de backend!

Etapa 3 - Backend

Neste capítulo, responderemos à seguinte pergunta: O que acontece quando alguém preenche o formulário e clica em enviar ?

A resposta neste momento é: Nada. Vamos mudar isso. Escrevendo um pouco de JavaScript. Vamos exibir um alerta pop-up quando alguém inserir informações válidas e clicar em Enviar. Em seu index.html você colocará o seguinte <script> código entre a última tag div de fechamento </div> e antes da tag de fechamento do corpo </body>. 

 

Se você salvar seu código e recarregar a página, preencha o formulário e clique em enviarvocê verá algo parecido com isto:

A screenshot of a sucessfull form submission

Agora que temos algo acontecendo quando um usuário envia o formulário, vamos avançar um pouco mais. Queremos examinar o conteúdo do formulário e nos certificar de que podemos obter os dados corretos no JSON. Queremos uma string para o nome, um número inteiro para a idade e um booleano para a recomendação.

E acontece que a caixa de seleção HTML não está funcionando bem. O valor que ela fornece por padrão é nenhum valor e, quando marcada, fornece o conteúdo do campo de valor. Vamos adicionar outro campo de entrada, oculto, para garantir que o valor padrão seja False.

Agora, com relação ao código JavaScript, há algumas novas linhas interessantes a serem analisadas.

Com isso resolvido, vamos levar a sério e começar a criar uma função Netlify. Entrar função netlify:create em seu terminal. Você deverá ver algo como:

Selecione Sem servidor deixa o padrão para a próxima pergunta sobre o caminho, mantém o JavaScript como a linguagem, mantém o padrão mundo do inferno e, em seguida, dê um nome à sua função. A minha se chama salvar formulário. Isso gerará novos arquivos na pasta netlify. Se você executar desenvolvimento da netlify agora, você verá novas linhas nos registros:

Isso significa que nosso servidor de desenvolvimento netlify também está atendendo à nossa função recém-criada. Dê uma olhada no arquivo recém-gerado ./netlify/functions/saveform/saveform.js.

Vamos testá-lo chamando essa função quando o usuário clicar em enviar. Basta adicionar o seguinte código após o último console.log ligar:

Adicionar, confirmar e enviar. netlify open:admin

A screenshot showing the Netlify site administrator overview, with the list of all deployments already done

A screenshot of the form page and the developer tools opened, showing the message returned by the Netlify function

Neste ponto, você tem um frontend e um backend implantados na Internet. Mas tudo o que estamos fazendo é chamar a função padrão criada pelo assistente do Netlify. A próxima etapa é enviar o conteúdo do formulário para essa função e armazená-lo em um banco de dados.

Etapa 4 - Banco de dados

A primeira coisa a fazer é descobrir como enviar os detalhes do formulário para a função. Para isso, precisamos alterar nosso método GET para um método POST. Essas coisas são chamadas de métodos de solicitação HTTP, às vezes chamados de verbos HTTP. Você pode dar uma olhada na lista completa em MDN. Uma solicitação do método Get é usada apenas para recuperar dados. Uma solicitação de método Post é usada para criar ou alterar dados. É exatamente isso que queremos. Queremos criar uma nova entrada em nosso banco de dados quando alguém enviar um formulário. Uma solicitação HTTP tem um método, alguns cabeçalhos (metadados sobre suas solicitações, aqui estamos dizendo que a solicitação terá conteúdo JSON com o cabeçalho Content-Typ) e um corpo. O corpo da nossa solicitação será um texto JSON.

Nossa solicitação HTTP do frontend para o backend foi alterada, agora precisamos adaptar o código do backend.

 

Você deverá ver uma mensagem diferente no console de desenvolvimento da Web, ou seja, deverá ver {"name": "yourName"}.

Enviamos os dados do formulário para o backend e nos certificamos disso. Agora vamos para o lado do banco de dados. Trabalhando no Couchbase, esse é o banco de dados que vou usar. Uma maneira simples de tentar, vá para https://cloud.couchbase.com/sign-upSe você criar uma conta, terá uma avaliação de 30 dias, sem necessidade de cartão de crédito.

A screenshot of the first Couchbase Capella Get started wizard step

Você pode deixar o padrão ativado ou escolher seu provedor de nuvem favorito e a região mais próxima. Clique em Implantar agora e aguarde a implantação do seu banco de dados.

A screenshot of the Couchbase Capella trial home

Duas coisas que queremos fazer a partir daí. Garantir que possamos nos conectar a esse banco de dados a partir do nosso código de backend e garantir que possamos gravar os dados em algum lugar. Vá em frente e clique no botão Conectar guia.

No Couchbase, armazenamos dados em Buckets. Por padrão, a avaliação vem com um bucket de amostra de viagem pré-importado. Não vamos usá-lo. Em vez disso, vamos criar nosso próprio bucket. Clique em Configurações no menu de nível superior, do que em Baldes no menu à esquerda.

A screenshot of the Bucket settings in Couchbase Capella

Agora, clique em + Criar baldedê um nome a ele e deixe o restante com as configurações padrão. Criar balde.

A screenshot of the Buckets settings home, with the newly created bucket visible

Temos um novo Bucket, agora precisamos criar as credenciais associadas. Clique no botão Acesso ao banco de dados do que Criar acesso ao banco de dados botão.

A screenshot of the empty Credentials settings

A screenshot fo the credentials creation detail

Certifique-se de lembrar o nome de usuário e a senha e clique em Criar banco de dados. Uma última coisa a fazer é permitir que esse banco de dados possa ser acessado publicamente. No momento, ele está oculto. Clique em Endereços IP permitidosdo que Adicionar IP permitido. Clique em Permitir acesso De qualquer lugare siga as instruções. O formulário deverá ser preenchido previamente e, em seguida, clique no botão Adicionar IP permitido botão. Você pode achar que isso é um pouco complicado. Por que ele não é o padrão?

A screenshot of the Allow Access from Anywhere popup

A screenshot of the resuting operation with the newly added IP range

Agora, clique no ícone Conectar guia. Você verá a guia Cadeia de conexãoselecione as credenciais do banco de dados, altere o idioma para Node e ele nos dará as instruções corretas para nos conectarmos ao banco de dados a partir do nosso código de backend.

A screenshot of the SDK connection instructions, with doc and code

Podemos copiar e colar isso em nosso código de função e adicionar mais algumas coisas:

Para o Couchbase, você precisa instalá-lo. Em execução npm i couchbase@4.2.4 será suficiente. No momento, a compatibilidade Netlify/Couchbase é garantida para o Couchbase versão 4.2.4 ou inferior. Isso se deve à natureza do nosso SDK. Trata-se de uma interface JavaScript sobre o nosso SDK em C. E as dependências C esperam encontrar suas dependências de sistema na versão correta. No momento, o Couchbase 4.2.5 está esperando encontrar GLIBC_29 mas ele não está disponível no sistema Ubuntu que executa nosso código de back-end do Netlify.

Agora que temos dependências, vamos ser explícitos em como criá-las. Você pode adicionar um netlify.toml na raiz do repositório com o seguinte conteúdo:

Ele está fazendo algumas coisas. Instalar as dependências e remover a tabela de símbolos de depuração de couchbase_impl.node. Esse arquivo é a biblioteca C usada pelo nosso Node SDK. E ele é muito grande para o Netlify no momento. Portanto, estamos removendo a bagunça desnecessária proveniente do processo de compilação.

Agora você poderia adicionar os novos arquivos, fazer o commit e enviar para o GitHub. Mas isso enviaria sua senha para o GitHub. Não queremos isso. Em vez disso, você pode testá-lo executando desenvolvimento da netlify. Continue e reenvie o formulário.

Se tudo correu bem, você gravou dados em seu banco de dados! Você pode verificar isso facilmente acessando a interface do usuário do Couchbase Capella. Clique em Ferramentas de dadosSelecione seu Bucket, Scope e collection, e você verá sua pesquisa no documento.

Isso é ótimo, você acabou de escrever um código para conectar seu banco de dados!

Etapa 5 - Gerenciamento de configuração

Para evitar o envio de nossas credenciais para o GitHub, usaremos variáveis de ambiente. As variáveis de ambiente são comuns a todos os sistemas operacionais e são a melhor maneira de gerenciar a configuração em diferentes ambientes (diferentes sistemas operacionais, nuvens, testes, preparação, pré-produção, produção, o que for adequado ao seu fluxo de trabalho).

No Mac ou Linux, você pode executar export MYVARIABLE="value" em seu terminal. No Windows, você pode executar $Env:MYVARIABLE="value"

Para defini-los no contexto da Netlify, você pode acessar a interface do usuário e fazer isso manualmente ou usar a CLI:

Agora você pode adicionar seus arquivos, confirmar e enviar seu código. Parabéns, você fez o fullstack. Back-end, front-end e banco de dados. E implantou tudo ao vivo! Mas nosso trabalho ainda não terminou. Ainda há algumas coisas que podemos fazer para tornar isso mais profissional.

Etapa 6 - Feedback do usuário

No momento, não há muita coisa acontecendo quando o usuário clica no botão Enviar do nosso formulário. Precisamos alterar isso para que eles saibam que foram registrados com sucesso ou não. A primeira etapa é verificar se há um erro no lado do desenvolvimento. O código de status HTTP é bem feito, qualquer coisa igual ou superior a 400 geralmente é um erro, portanto, podemos fazer algo assim:

Para testá-lo, basta cometer um erro de digitação em algum lugar da cadeia de conexão ou das credenciais do Couchbase. Você deverá ver erros no console da Web ao clicar em Enviar. Mas o console da Web é apenas para nós, precisamos adicionar uma mensagem de erro ou de sucesso adequada ao nosso usuário.

Adicionei alguns elementos HTML de extensão com mensagens de erro e sucesso logo antes do final do formulário. Observe o esconder Classe CSS que os torna invisíveis por enquanto.

E aqui está o CSS correspondente. Exibindo o erro em vermelho, ocultando ou exibindo um elemento, e uma bela animação de fade-out, porque eu sou chique assim.

Agora vamos juntar tudo. As duas primeiras linhas obtêm os novos elementos de extensão que acabaram de ser adicionados. A chamada para form.reset() está limpando todos os valores do formulário quando o código de status da resposta retornada é 200. Depois, o resto é brincar com as classes CSS para fazer com que a mensagem apareça, depois desaparecer com a adição da classe fade-out, depois uma função de tempo limite de 7000 ms removerá todas as classes e ocultará o elemento novamente. É praticamente a mesma coisa quando há um erro.

Agora você pode testar o envio de um formulário novamente e ver a mensagem de sucesso ou de erro diferente, dependendo do que você decidiu fazer. Quando estiver satisfeito, você poderá adicionar, confirmar e enviar esse código.

Parabéns, você chegou até o final deste guia! Você usou o git, o GitHub, o Netlify e o Couchbase Capella para implantar um formulário HTML na Web e certificou-se de que o conteúdo fosse armazenado em um banco de dados sempre que os usuários enviassem o formulário.

Pronto para mais?

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Laurent Doguin

Laurent é um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve código em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programação reativa e outras coisas que estão na moda. Ele também foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experiência para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Relações com Desenvolvedores na Couchbase.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.