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 install express --save |
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 app = require('express')(); const couchbase = require("couchbase"); async function main(){ app.get('/', (req, res) => res.send('Hello world!')); app.listen(3000, () => console.log('Listening on port 3000')); } main(); |
Inicie-o e acesse-o por meio de um navegador da Web na porta 3000. Ele deve se parecer com a imagem abaixo:
|
1 |
node app.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/get/[documentID] |
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 |
app.get('/get/:docid', runAsync(async (req, res) => { var docid = req.params.docid; var docjson = await getDoc(docid, function(err, result){ res.json(result.content) }); })); |
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 |
function runAsync (callback) { return function (req, res, next) { callback(req, res, next) .catch(next) } } |
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 cluster = new couchbase.Cluster("couchbase://localhost", { username: "Administrator", password: "Administrator" }); var bucket = cluster.bucket("travel-sample"); var collection = bucket.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 = async (key) => { var result = await collection.get(key); console.log(result) return result }; |
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 |
app.listen(3000, () => console.log('Listening on port 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, https://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 app = require('express')(); var couchbase = require("couchbase"); async function main(){ app.get('/get/:docid', runAsync(async (req, res) => { var docid = req.params.docid; var docjson = await getDoc(docid, function(err, result){ res.json(result.content) }); res.json(docjson.content); })); app.listen(3000, () => console.log('Listening on port 3000')); function runAsync (callback) { return function (req, res, next) { callback(req, res, next) .catch(next) } } var cluster = new couchbase.Cluster("couchbase://localhost", { username: "Administrator", password: "Administrator" }); var bucket = cluster.bucket("travel-sample"); var collection = bucket.defaultCollection(); var getDoc = async (key) => { var result = await collection.get(key); console.log(result) return result }; } main(); |
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 [...]