Práticas recomendadas e tutoriais

Use TypeScript e Angular como front-end para seu armazenamento de perfis de usuário

Recentemente, escrevi um tutorial intitulado, Criação de um armazenamento de perfil de usuário com Node.js e um banco de dados NoSQLpois esse é um assunto e um caso de uso muito popular quando se trata de bancos de dados NoSQL. Nesse tutorial, criamos uma API usando Node.js e Couchbase para armazenar usuários, informações associadas a determinados usuários e sessões expiradas. No entanto, ele era estritamente relacionado ao back-end, sem interface com o usuário.

Queríamos usar a API de armazenamento de perfil de usuário e entender como criar, usando TypeScript e Angular, uma página de perfil que se comunica com cada um dos pontos de extremidade da API.

Este tutorial foi atualizado em 7 de janeiro de 2021 por Eric Bishard para trabalhar com o Angular 11!

Antes de continuar, presumimos que você tenha seguido o tutorial anterior. Também vamos supor que você tenha o CLI angular instalado.

Criar um projeto Angular com os componentes necessários

O front-end do cliente será rudimentar, mas o criaremos do zero. Do ponto de vista do design, ele não terá uma ótima aparência, pois este tutorial trata da funcionalidade e do trabalho com a nossa API. Você é quem decide se quer deixá-lo bonito e oferecer uma experiência do usuário melhor.

Na CLI do Angular, execute o seguinte comando:

O comando acima criará um novo projeto no caminho da CLI. Com o projeto criado, precisaremos criar um componente para cada uma das páginas esperadas do aplicativo.

Execute o seguinte com a CLI do Angular:

Serão criados quatro componentes de perfil de usuário do Angular, cada um com arquivos TypeScript e HTML apropriados. Antes de começarmos a adicionar lógica a eles, precisamos uni-los para fins de navegação usando o modelo de perfil de usuário do Angular abaixo.

Abra o arquivo src/app/app.module.ts e inclua o seguinte:

O código acima foi criado pela CLI do Angular, no entanto, adicionamos algumas importações de módulos principais e personalizados e os importamos junto com o rotas no @NgModule bloco.

Para ativar nossa navegação, precisaremos atualizar um arquivo. Abra o arquivo src/app/app.component.html e substitua todo o conteúdo pelo seguinte:

Neste ponto, o projeto de perfil de usuário tem uma configuração básica com o Angular.

Vamos dar uma olhada no tratamento da criação de perfis de usuário e no login com as informações da conta.

Manipulação de login e registro

A primeira tela que o usuário verá é a tela de login. O objetivo aqui é coletar um nome de usuário e uma senha, enviá-los à API, obter um ID de sessão como resposta e usá-lo em todas as páginas futuras do aplicativo.

Abra o arquivo src/app/login/login.component.ts e inclua o seguinte código TypeScript:

Há algumas coisas importantes acontecendo no código acima, portanto, vamos detalhá-lo.

Nossa intenção é vincular um objeto a um formulário na marcação HTML. Esse objeto será o entrada variável. Na construtor definimos cada propriedade possível como um valor vazio que será refletido na interface do usuário.

Quando o usuário decide fazer login, as informações de cabeçalho apropriadas são definidas para a solicitação e o objeto é enviado ao servidor. Se for bem-sucedida, a resposta será um objeto com o ID da sessão. Vamos passá-lo para a próxima página como um parâmetro de consulta.

A marcação HTML que combina com esse TypeScript é encontrada no arquivo src/app/login/login.component.html e ele se parece com o seguinte:

Entrar

 

Registro

Uma observação que devo mencionar aqui é que, se você digitar a senha errada, não criamos nenhuma forma de informar ao usuário que o nome de usuário ou a senha usada não estava correta.

O que é importante aqui é o uso do [(ngModel)] que são usados para vinculação de dados. Também oferecemos navegação para a página de registro por meio do atributo [routerLink] atributo.

Então, como é o componente de registro?

Abra o arquivo src/app/register/register.component.ts e inclua o seguinte código TypeScript:

Você perceberá que o código de registro é semelhante ao código de login. Estamos apenas coletando dados de formulário e enviando-os para um endpoint de API diferente.

O HTML correspondente encontrado no arquivo src/app/register/register.component.html tem a seguinte aparência:

Registro

 

Login

O HTML contém elementos de formulário vinculados ao [(ngModel)] bem como um link para a página de login.

Lembre-se de que, depois de fazermos o login, estamos passando a sessão para as páginas específicas do usuário. Isso nos permitirá obter as informações do usuário em nosso armazenamento de perfis.

Criação e exibição de artigos de blog para um usuário específico no Profile Store

Depois de fazer login, o usuário é levado a uma página em que pode visualizar uma lista de artigos de blog que escreveu. Lembre-se de que nosso backend está conectando documentos NoSQL por meio de um ID de perfil que estamos definindo.

Para visualizar os artigos do blog, o ID da sessão passado da página anterior precisa ser definido como um cabeçalho em uma solicitação. O resultado da solicitação pode ser imediatamente renderizado na tela.

Abra o arquivo src/app/blogs/blogs.component.ts e inclua o seguinte código TypeScript:

Esse arquivo segue uma estratégia semelhante à forma como lidamos com o login e o registro.

Em termos de variáveis, criamos uma variável privada chamada lado que manterá a sessão passada da página anterior. O entradas será uma matriz de entradas de blog para um indivíduo retornado do endpoint da API.

Quando a página é carregada, devemos exibir as entradas do blog. Nunca é uma boa ideia carregar ou solicitar dados de dentro do construtor portanto, em vez disso, usamos o método ngOnInit método.

No ngOnInit podemos pegar os parâmetros passados e construir um cabeçalho de autorização. Em seguida, fazemos uma solicitação ao nosso endpoint que contém o cabeçalho.

Para criar uma nova entrada de blog, podemos passar o parâmetro lado para a próxima rota:

Isso é exatamente como o que vimos na tela de login.

A marcação HTML que alimenta a interface do usuário não será mais complexa do que a lógica TypeScript que a alimenta. O HTML pode ser visto na seção src/app/blogs/blogs.component.html assim:

Blogs que você escreveu

 

|

 

{{ entry.blog.title }}

 

{{ entry.blog.content }}

 

A criação de uma entrada de blog terá uma lógica semelhante à que já vimos. Abra a seção src/app/blog/blog.component.ts e inclua o seguinte código TypeScript:

No código acima, estamos inicializando os dados do formulário e recuperando o lado que foi passado da página anterior.

Quando tentamos salvar a entrada, construímos um cabeçalho apropriado que contém o ID da sessão e o enviamos para a API com os dados do formulário. Uma vez concluído, podemos navegar para trás na pilha.

O HTML para a interface do usuário dessa página está no arquivo src/app/blog/blog.component.html assim:

Nova entrada no blog

 



Manter a consistência em mente

Por padrão, o Couchbase tentará ser rápido, o que significa que ele pode retornar dados mais rapidamente do que a atualização dos índices. Quando isso acontece, você pode ter dados recém-criados ausentes em seus resultados.

Expliquei como corrigir isso em um tutorial anteriormas uma rápida recapitulação está abaixo.

Em nosso blogs podemos definir a consistência da varredura e, nesse caso, estamos dizendo a ele para esperar até que o índice seja atualizado antes de retornar os dados. Essa é uma operação rápida, portanto, não pense que ela será rastreada quando você fizer isso. Apenas não será tão rápido quanto o padrão.

Nesse ponto, o front-end deve funcionar perfeitamente com o back-end!

Para executar os dois projetos juntos.

Primeiro, verifique se o Couchbase está instalado e se você tem um bucket chamado blog criado e o índice que criamos no tutorial da API.

Em seguida, execute a API REST do Node:

Em seguida, execute o projeto Angular:

Registre-se, faça login, crie uma ou duas postagens de blog e verifique se a rota de blogs está mostrando cada um dos blogs que você criou.

Como você pode melhorar este projeto

Como mencionamos anteriormente, o projeto poderia usar CSS e layout personalizados, bem como validação de formulário e alertas ou notificações, caso o usuário tenha tentado usar a senha errada ou o título do blog exceda um determinado número de caracteres, ou se um erro tiver sido lançado porque a API não está sendo executada corretamente.

Criar um Edição do blog página e rota e um link do título das postagens do blog na página Rota/página de blogs.

Criar navegação e estrutura sofisticadas para o aplicativo.

Reordenar a lista de blogs na seção Rota/página de blogs ou configurar a capacidade de classificar blogs por título em ordem crescente ou decrescente.

Permita que os usuários façam login com logins sociais ou use este projeto que criamos e adicione uma rota de portfólio e outras páginas de suporte como um ponto de partida para seu próprio portfólio de desenvolvedor.

Crie um serviço Angular para lidar com o ID da sessão, de modo que não seja necessário transmiti-lo a cada evento de navegação.

Conclusão

Você acabou de ver como criar um front-end de cliente simples usando o Angular 11 e o TypeScript para o armazenamento de perfil de usuário que vimos em um exemplo anterior. Cada modelo de perfil de usuário do Angular é diferente, é claro. Esse front-end de cliente é um dos muitos exemplos possíveis de página de perfil de usuário de material angular para um front-end, porque esse é um aplicativo modular de pilha completa. Isso significa que o back-end pode estar em qualquer idioma e o front-end pode estar em qualquer idioma.

O código finalizado está disponível no GitHub em couchbaselabs / couchbase-angular-blog-app no GitHub.

Para obter mais informações sobre como usar o Couchbase com o Node.js, consulte o Portal do desenvolvedor do Couchbase.

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

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

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.