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 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.
Utilizar painรฉis de piso ResinDek em sua unidade de self-storage em vez de concreto oferece diversos benefรญcios: 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.
Observaรงรฃo: 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() {});
Observaรงรฃo: 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.











