Node.js MongoDB Tutorial com exemplos
Quase todos os aplicativos da web modernos possuem algum tipo de sistema de armazenamento de dados no back-end. Por exemplo, se considerarmos o caso de um aplicativo de compras na web, dados como o preço de um item seriam armazenados no banco de dados.
A estrutura Node js pode trabalhar com bancos de dados relacionais (como Oracle e MS SQL Server) e bancos de dados não relacionais (como MongoDB). Neste tutorial, veremos como podemos usar bancos de dados em aplicativos Node js.
Bancos de dados Node.js e NoSQL
Ao longo dos anos, bancos de dados NoSQL, como MongoDB e para MySQL tornaram-se bastante populares como bancos de dados para armazenamento de dados. A capacidade dessas bases de dados de armazenar qualquer tipo de conteúdo e principalmente em qualquer tipo de formato é o que as torna tão famosas.
Node.js tem a capacidade de trabalhar com ambos MySQL e MongoDB como bancos de dados. Para usar qualquer um desses bancos de dados, você precisa baixar e usar os módulos necessários usando o gerenciador de pacotes Node.
Para a MySQL, o módulo necessário é chamado “mysql” e para usar MongoDB o módulo necessário para ser instalado é “Mongoose”.
Com esses módulos, você pode realizar as seguintes operações em Node.js
- Gerenciar o pool de conexões – Aqui é onde você pode especificar o número de MySQL conexões de banco de dados que devem ser mantidas e salvas pelo Node.js.
- Crie e feche uma conexão com um banco de dados. Em ambos os casos, você pode fornecer uma função de retorno de chamada que pode ser chamada sempre que os métodos de conexão “criar” e “fechar” forem executados.
- Consultas podem ser executadas para obter dados dos respectivos bancos de dados para recuperar dados.
- A manipulação de dados, como inserção, exclusão e atualização de dados também pode ser realizada com esses módulos.
Para os tópicos restantes, veremos como podemos trabalhar com MongoDB bancos de dados dentro Node.js.
utilização MongoDB e Node.js
Como discutido no tópico anterior, MongoDB é um dos bancos de dados mais populares usados junto com o Node.js.
Durante este capítulo, veremos
Como podemos estabelecer conexões com um MongoDB banco de dados
Como podemos realizar as operações normais de leitura de dados de um banco de dados, bem como inserir, excluir e atualizar registros em um MongoDB base de dados.
Para os fins deste capítulo, vamos supor que temos o seguinte MongoDB dados em vigor.
Nome do banco de dados: EmployeeDB
Nome da coleção: Funcionário
Documents { {Employeeid : 1, Employee Name : Guru99}, {Employeeid : 2, Employee Name : Joe}, {Employeeid : 3, Employee Name : Martin}, }
- Instalando os Módulos NPM
Você precisa de um driver para acessar o Mongo de dentro de um aplicativo Node. Existem vários drivers Mongo disponíveis, mas MongoDB está entre os mais populares. Para instalar o MongoDB módulo, execute o comando abaixo
npm instalar mongodb
- Criando e fechando uma conexão com um MongoDB base de dados. O trecho de código abaixo mostra como criar e fechar uma conexão com um MongoDB base de dados.
Explicação do código:
- O primeiro passo é incluir o módulo mongoose, o que é feito através da função require. Assim que este módulo estiver instalado, podemos usar as funções necessárias disponíveis neste módulo para criar conexões com o banco de dados.
- A seguir, especificamos nossa string de conexão com o banco de dados. Na string de conexão, existem 3 valores-chave que são passados.
- O primeiro é ‘mongodb’ que especifica que estamos nos conectando a um banco de dados mongoDB.
- O próximo é 'localhost', o que significa que estamos nos conectando a um banco de dados na máquina local.
- O próximo é 'EmployeeDB' que é o nome do banco de dados definido em nosso MongoDB base de dados.
- A próxima etapa é realmente conectar-se ao nosso banco de dados. A função connect recebe nossa URL e tem a facilidade de especificar uma função de retorno de chamada. Ele será chamado quando a conexão com o banco de dados for aberta. Isso nos dá a oportunidade de saber se a conexão com o banco de dados foi bem-sucedida ou não.
- Na função, estamos escrevendo a string “Conexão estabelecida” no console para indicar que uma conexão bem-sucedida foi criada.
- Finalmente, estamos fechando a conexão usando a instrução db.close.
Se o código acima for executado corretamente, a string “Conectado” será escrita no console conforme mostrado abaixo.
- Consultando dados em um MongoDB banco de dados - Usando o MongoDB driver, também podemos buscar dados do MongoDB banco de dados. A seção abaixo mostrará como podemos usar o driver para buscar todos os documentos de nossa coleção Employee em nosso banco de dados EmployeeDB. Esta é a coleção em nosso MongoDB banco de dados, que contém todos os documentos relacionados aos funcionários. Cada documento possui um ID de objeto, um nome de funcionário e um ID de funcionário para definir os valores do documento.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { var cursor = db.collection('Employee').find(); cursor.each(function(err, doc) { console.log(doc); }); });
Explicação do código:
- Na primeira etapa, estamos criando um cursor (Um cursor é um ponteiro que é usado para apontar para os vários registros buscados de um banco de dados. O cursor é então usado para iterar pelos diferentes registros no banco de dados. Aqui estamos definindo um nome de variável chamado cursor que será usado para armazenar o ponteiro para os registros buscados do banco de dados.) que aponta para os registros que são buscados da coleção MongoDb. Também temos a facilidade de especificar a coleção 'Employee' da qual buscar os registros. A função find() é usada para especificar que queremos recuperar todos os documentos do MongoDB coleção.
- Agora estamos iterando em nosso cursor e para cada documento no cursor executaremos uma função.
- Nossa função simplesmente imprimirá o conteúdo de cada documento no console.
Nota: - Também é possível buscar um determinado registro em um banco de dados. Isso pode ser feito especificando a condição de pesquisa na função find(). Por exemplo, suponha que você queira apenas buscar o registro que tem o nome do funcionário como Guru99, então esta declaração pode ser escrita da seguinte forma
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Se o código acima for executado com sucesso, a seguinte saída será exibida em seu console.
Saída:
Da saída,
- Você poderá ver claramente que todos os documentos do acervo foram recuperados. Isso é possível usando o método find() da conexão mongoDB (db) e iterando todos os documentos usando o cursor.
- Inserindo documentos em uma coleção – Os documentos podem ser inseridos em uma coleção usando o método insertOne fornecido pelo MongoDB biblioteca. O trecho de código abaixo mostra como podemos inserir um documento em uma coleção mongoDB.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').insertOne({ Employeeid: 4, EmployeeName: "NewEmployee" }); });
Explicação do código:
- Aqui estamos usando o método insertOne do MongoDB biblioteca para inserir um documento na coleção Employee.
- Estamos especificando os detalhes do documento sobre o que precisa ser inserido na coleção Employee.
Se você verificar agora o conteúdo do seu MongoDB banco de dados, você encontrará o registro com Employeeid de 4 e EmployeeName de “NewEmployee” inserido na coleção Employee.
Nota: O console não mostrará nenhuma saída porque o registro está sendo inserido no banco de dados e nenhuma saída pode ser mostrada aqui.
Para verificar se os dados foram inseridos corretamente no banco de dados, você precisa executar os seguintes comandos em MongoDB
- Usar EmployeeDB
- db.Employee.find({Employeeid:4})
A primeira instrução garante que você esteja conectado ao banco de dados EmployeeDb. A segunda instrução procura o registro que possui o ID de funcionário 4.
- Atualizando documentos em uma coleção – Os documentos podem ser atualizados em uma coleção usando o método updateOne fornecido pelo MongoDB biblioteca. O trecho de código abaixo mostra como atualizar um documento em uma coleção mongoDB.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').updateOne({ "EmployeeName": "NewEmployee" }, { $set: { "EmployeeName": "Mohan" } }); });
Explicação do código:
- Aqui estamos usando o método “updateOne” do MongoDB biblioteca, que é usada para atualizar um documento em uma coleção do mongoDB.
- Estamos especificando os critérios de pesquisa de qual documento precisa ser atualizado. No nosso caso, queremos encontrar o documento que possui o EmployeeName de “NewEmployee”.
- Queremos então definir o valor do EmployeeName do documento de “NewEmployee” para “Mohan”.
Se você verificar agora o conteúdo do seu MongoDB banco de dados, você encontrará o registro com Employeeid de 4 e EmployeeName de “Mohan” atualizado na coleção Employee.
Para verificar se os dados foram atualizados corretamente no banco de dados, você precisa executar os seguintes comandos em MongoDB
- Usar EmployeeDB
- db.Employee.find({Employeeid:4})
A primeira instrução garante que você esteja conectado ao banco de dados EmployeeDb. A segunda instrução procura o registro que possui o ID de funcionário 4.
- Excluindo documentos em uma coleção – Os documentos podem ser excluídos de uma coleção usando o método “deleteOne” fornecido pelo MongoDB biblioteca. O trecho de código abaixo mostra como excluir um documento em uma coleção mongoDB.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').deleteOne( { "EmployeeName": "Mohan" } ); });
Explicação do código:
- Aqui estamos usando o método “deleteOne” do MongoDB biblioteca, que é usada para excluir um documento em uma coleção do mongoDB.
- Estamos especificando os critérios de pesquisa de qual documento precisa ser excluído. No nosso caso, queremos encontrar o documento que possui o EmployeeName de “Mohan” e deletar este documento.
Se você verificar agora o conteúdo do seu MongoDB banco de dados, você encontrará o registro com Employeeid de 4 e EmployeeName de “Mohan” excluído da coleção Employee.
Para verificar se os dados foram atualizados corretamente no banco de dados, você precisa executar os seguintes comandos em MongoDB
- Usar EmployeeDB
- db.Employee.find()
A primeira instrução garante que você esteja conectado ao banco de dados EmployeeDb. A segunda instrução pesquisa e exibe todos os registros da coleção de funcionários. Aqui você pode ver se o registro foi excluído ou não.
Como construir um aplicativo Node Express com MongoDB para armazenar e servir conteúdo
Construindo um aplicativo com uma combinação de uso expresso e MongoDB é bastante comum hoje em dia.
Ao trabalhar com JavaScript aplicativos baseados na web, normalmente usaremos aqui o termo pilha MEAN.
- O termo pilha MEAN refere-se a uma coleção de JavaTecnologias baseadas em scripts usadas para desenvolver aplicativos web.
- MEAN é um acrônimo para MongoDB, ExpressJS, Angular JS, e Node.js.
Portanto, é sempre bom entender como o Node.js e MongoDB trabalham juntos para entregar aplicativos que interagem com bancos de dados back-end.
Vejamos um exemplo simples de como podemos usar “express” e “MongoDB" junto. Nosso exemplo fará uso da mesma coleção Employee no MongoDB Banco de dados EmployeeDB.
Agora incorporaremos o Express para exibir os dados em nossa página web quando solicitado pelo usuário. Quando nosso aplicativo é executado em Node.js, pode ser necessário navegar até o URL http://localhost:3000/Employeeid.
Quando a página for iniciada, todos os IDs de funcionários da coleção Employee serão exibidos. Então, vamos ver o trecho de código nas seções que nos permitirão fazer isso.
Passo 1) Defina todas as bibliotecas que precisam ser utilizadas em nossa aplicação, que no nosso caso é tanto a MongoDB e biblioteca expressa.
Explicação do código:
- Estamos definindo nossa biblioteca 'express', que será utilizada em nossa aplicação.
- Estamos definindo nosso 'MongoDB' biblioteca, que será usada em nosso aplicativo para conexão com nosso MongoDB base de dados.
- Aqui estamos definindo a URL do nosso banco de dados ao qual nos conectar.
- Por fim, estamos definindo uma string que será usada para armazenar nossa coleção de IDs de funcionários que precisam ser exibidos no navegador posteriormente.
Passo 2) Nesta etapa, obteremos todos os registros de nossa coleção 'Funcionário' e trabalharemos com eles de acordo.
Explicação do código:
- Estamos criando uma rota para nosso aplicativo chamada 'Employeeid'. Então, sempre que alguém navegar para http://localhost:3000/Employeeid da nossa aplicação, o trecho de código definido para esta rota será executado.
- Aqui estamos obtendo todos os registros em nossa coleção 'Employee' por meio do comando db.collection('Employee').find(). Estamos então atribuindo esta coleção a uma variável chamada cursor. Utilizando esta variável de cursor poderemos navegar por todos os registros da coleção.
- Agora estamos usando a função cursor.each() para navegar por todos os registros de nossa coleção. Para cada registro, definiremos um trecho de código sobre o que fazer quando cada registro for acessado.
- Por fim, vemos que se o registro retornado não for nulo, então estamos pegando o funcionário através do comando “item.Employeeid”. O resto do código serve apenas para construir um código HTML adequado que permitirá que nossos resultados sejam exibidos corretamente no navegador.
Passo 3) Nesta etapa, enviaremos nossa saída para a página web e faremos nosso aplicativo escutar em uma porta específica.
Explicação do código:
- Aqui estamos enviando todo o conteúdo que foi construído na etapa anterior para nossa página web. O parâmetro 'res' nos permite enviar conteúdo para nossa página web como resposta.
- Estamos fazendo com que todo o nosso aplicativo Node.js escute na porta 3000.
Saída:
Da saída,
- Isso mostra claramente que todos os IDs de funcionário na coleção Employee foram recuperados. Isso ocorre porque usamos o MongoDB driver para se conectar ao banco de dados e recuperar todos os registros de funcionários e posteriormente usar “express” para exibir os registros.
Aqui está o código para sua referência
var express = require('express'); var app = express(); var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; var str = ""; app.route('/Employeeid').get(function(req, res) { MongoClient.connect(url, function(err, db) { var cursor = db.collection('Employee').find(); //noinspection JSDeprecatedSymbols cursor.each(function(err, item) { if (item != null) { str = str + " Employee id " + item.Employeeid + "</br>"; } }); res.send(str); db.close(); }); }); var server = app.listen(3000, function() {});
Nota: cursor.each pode ser descontinuado com base na versão do seu MongoDB motorista. Você pode anexar //noinspection JSDeprecatedSymbols antes de cursor.each para contornar o problema. Alternativamente, você pode usar forEach. Abaixo está o código de exemplo usando forEach
var express = require('express'); var app = express(); var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; var str = ""; app.route('/Employeeid').get(function(req, res) { MongoClient.connect(url, function(err, db) { var collection = db.collection('Employee'); var cursor = collection.find({}); str = ""; cursor.forEach(function(item) { if (item != null) { str = str + " Employee id " + item.Employeeid + "</br>"; } }, function(err) { res.send(err); db.close(); } ); }); }); var server = app.listen(8080, function() {});
Resumo
- Node.js é usado em conjunto com NoSQL bancos de dados para construir muitos aplicativos da web modernos. Alguns dos bancos de dados comuns usados são MySQL e MongoDB.
- Um dos módulos comuns usados para trabalhar com MongoDB bancos de dados é um módulo chamado 'MongoDB.' Este módulo é instalado através do gerenciador de pacotes Node.
- Com o MongoDB módulo, é possível consultar registros em uma coleção e realizar as operações normais de atualização, exclusão e inserção.
- Finalmente, uma das práticas modernas é usar a estrutura expressa junto com MongoDB para fornecer aplicativos modernos. A estrutura Express pode fazer uso dos dados retornados pelo MongoDB driver e exibir os dados ao usuário na página da web de acordo.