Se você for novo no Node.js, o Couchbase ou ambos, você está prestes a aumentar o nível de suas habilidades.
Hoje, mostrarei como criar um aplicativo mínimo baseado em REST para recuperar documentos do Couchbase usando o Node.js e o Express.
Esta postagem dá continuidade à minha série introdutória sobre Usando o Node.js com o Couchbase (incluindo postagem da semana passada sobre funções assíncronas).
Na postagem de hoje, vamos nos basear em meus exemplos anteriores de uso do Node.js e do Couchbaseportanto, dê uma olhada nesses dois artigos anteriores, caso ainda não o tenha feito. Também vou presumir que você tenha conhecimento básico de JavaScript, Node.js e bancos de dados de documentos NoSQL.
Obtenha o Express Module
Começando de onde paramos na semana passada, podemos adicionar uma interface REST baseada na Web para ajudar a isolar seu aplicativo Web do banco de dados. Para fazer isso, você precisa do módulo Express. Instale-o e adicione-o às dependências de seu pacote usando:
1 |
npm instalar expresso --salvar |
Para testar se o Express está instalado corretamente, você pode criar um pequeno aplicativo (app.js
) que cria o servidor HTTP e retorna um Olá mundo
valor. Para maior comodidade, envolva-o com um assíncrono
como você pode ver abaixo:
1 2 3 4 5 6 7 8 9 |
var aplicativo = exigir("expresso)(); const couchbase = exigir("couchbase"); assíncrono função principal(){ aplicativo.obter('/', (req, res) => res.enviar("Olá mundo!)); aplicativo.ouvir(3000, () => console.registro('Listening on port 3000' (Escutando na porta 3000))); } principal(); |
Inicie-o e acesse-o por meio de um navegador da Web na porta 3000. Ele deve se parecer com a imagem abaixo:
1 |
nó aplicativo.js |
Parabéns! Você criou com sucesso seu primeiro aplicativo Express, embora pequeno.
Criação do aplicativo
O aplicativo tem três componentes:
-
- Gerenciamento de rotas
- Conectividade do banco de dados
- A camada do servidor HTTP
Adicionar uma rota expressa para recuperação de dados
O aplicativo intercepta e serve o caminho da raiz /
. Criaremos uma rota chamada obter
para recuperar um documento específico. O usuário REST fornece um ID de documento e retorna o documento JSON usando a seguinte sintaxe:
1 |
localhost:3000/obter/[ID do documento] |
A função para criar essa rota inclui dois objetos importantes: - req
(solicitação) e res
(resultados) - que usaremos para obter dados de e para o aplicativo. Veja o exemplo abaixo:
1 2 3 4 5 6 7 |
aplicativo.obter('/get/:docid', runAsync(assíncrono (req, res) => { var docid = req.parâmetros.docid; var docjson = aguardar getDoc(docid, função(erro, resultado){ res.json(resultado.conteúdo) }); })); |
Observe que o :docid
torna-se uma variável que você pode acessar por meio do objeto de solicitação: var docid = req.params.docid
. Em seguida, ele é passado para o getDoc()
que abordaremos em um minuto.
O aplicativo também tem essa função de conveniência abaixo para executar tudo de forma assíncrona:
1 2 3 4 5 6 |
função runAsync (retorno de chamada) { retorno função (req, res, próxima) { retorno de chamada(req, res, próxima) .captura(próxima) } } |
A função acima agrupa muito bem suas chamadas, mas não a explicarei em detalhes aqui (talvez em um post futuro). Por enquanto, basta adicioná-la ao script.
Adicionar uma função de recuperação de documentos
A conectividade do banco de dados no script é tão básica quanto nas postagens anteriores desta série. Selecione um Balde e coletae, em seguida, use o get()
para recuperar um documento com base em um determinado ID de documento.
Primeiro vem a parte da conectividade. Se você tiver um nome de usuário, senha, Bucket ou Collection diferente, substitua-o aqui:
1 2 3 4 5 6 7 |
var agrupamento = novo couchbase.Aglomerado("couchbase://localhost", { nome de usuário: "Administrador", senha: "Administrador" }); var balde = agrupamento.balde("amostra de viagem"); var coleção = balde.defaultCollection(); |
Observe que eu hospedo o aplicativo em um servidor na minha rede que também hospeda o banco de dados (localhost
). Mas eu acesso o aplicativo do meu laptop de desenvolvimento, portanto, nas amostras do navegador da Web abaixo, você verá o endereço IP 192.168.0.158
atingindo a API REST.
Agora vamos dar uma olhada na função principal de recuperação de documentos:
1 2 3 4 5 |
var getDoc = assíncrono (chave) => { var resultado = aguardar coleção.obter(chave); console.registro(resultado) retorno resultado }; |
Usamos o coleção
que é a conexão do banco de dados do Couchbase com o Bucket, etc., definida anteriormente. A variável get()
recebe uma entrada: uma cadeia de caracteres com um ID de documento. Por exemplo, usamos hotel_5336
nas postagens anteriores desta série.
Executando a API REST
O servidor HTTP para a API REST também precisa ser executado. Ele não foi alterado desde o primeiro aplicativo de teste desta postagem:
1 |
aplicativo.ouvir(3000, () => console.registro('Listening on port 3000' (Escutando na porta 3000))); |
Isso abrange todo o código; uma listagem completa está incluída abaixo. Agora você pode executar o servidor como antes ( nó app.js
) e forneça um ID de documento por meio do navegador da Web, por exemplo, http://192.168.0.158:3000/get/hotel_5336
.
O documento solicitado é impresso no console e retornado ao navegador:
Exemplo de código completo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
var aplicativo = exigir("expresso)(); var couchbase = exigir("couchbase"); assíncrono função principal(){ aplicativo.obter('/get/:docid', runAsync(assíncrono (req, res) => { var docid = req.parâmetros.docid; var docjson = aguardar getDoc(docid, função(erro, resultado){ res.json(resultado.conteúdo) }); res.json(docjson.conteúdo); })); aplicativo.ouvir(3000, () => console.registro('Listening on port 3000' (Escutando na porta 3000))); função runAsync (retorno de chamada) { retorno função (req, res, próxima) { retorno de chamada(req, res, próxima) .captura(próxima) } } var agrupamento = novo couchbase.Aglomerado("couchbase://localhost", { nome de usuário: "Administrador", senha: "Administrador" }); var balde = agrupamento.balde("amostra de viagem"); var coleção = balde.defaultCollection(); var getDoc = assíncrono (chave) => { var resultado = aguardar coleção.obter(chave); console.registro(resultado) retorno resultado }; } principal(); |
Conclusão
Nas próximas postagens, abordarei como criar uma consulta ao banco de dados, realizar pesquisas de texto completo e muito mais, tudo isso usando diferentes rotas do Express.
Enquanto isso, leve seu aplicativo para o próximo nível fazendo algumas das coisas a seguir:
-
- Adicionar captura de erros.
- Crie um sistema de autenticação, como o JSON Web Token ou JWT (consulte este projeto de demonstração de amostra de viagem).
- Leia mais sobre outras funções do SDK do Couchbase Node.js que você pode adicionar ao aplicativo.
Fique por dentro do restante da série de instruções sobre Node.js + Couchbase:
-
- Como começar a usar o SDK do Node.js para o Couchbase
- Como criar chamadas Get/Upsert assíncronas com o Node.js e o Couchbase
- Crie um aplicativo baseado em REST com Node.js, Express e Couchbase
- Como consultar dados JSON usando N1QL para Node.js e Couchbase
- Como adicionar a funcionalidade de pesquisa de texto completo ao seu aplicativo JavaScript
Faça o download do Couchbase e comece a construir
[O post Crie um aplicativo baseado em REST com Node.js, Express e Couchbase apareceu primeiro em The Couchbase [...]