Quase todos os aplicativos da web modernos têm algum tipo de sistema de armazenamento de dados no backend. Por exemplo, se você pegar 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 não relacionais (como MongoDB). Neste tutorial, veremos como podemos usar bancos de dados de aplicativos Node js.
Neste tutorial, você aprenderá-
- Bancos de dados Node.js e NoSQL
- Usando MongoDB e Node.js
- Como construir um aplicativo Node Express com MongoDB para armazenar e servir conteúdo
Bancos de dados Node.js e NoSQL
Com o passar dos anos, os bancos de dados NoSQL, como MongoDB e MySQL, tornaram-se bastante populares como bancos de dados para armazenamento de dados. A capacidade desses bancos de dados de armazenar qualquer tipo de conteúdo e principalmente em qualquer tipo de formato é o que torna esses bancos de dados tão famosos.
Node.js tem a capacidade de trabalhar com 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 do Node.
Para MySQL, o módulo necessário é chamado "mysql" e para usar o 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ão - aqui é onde você pode especificar o número de conexões de banco de dados MySQL 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.
- As consultas podem ser executadas para obter dados dos respectivos bancos de dados para recuperar dados.
- A manipulação de dados, como inserir, excluir e atualizar dados, também pode ser realizada com esses módulos.
Para os tópicos restantes, veremos como podemos trabalhar com bancos de dados MongoDB no Node.js.
Usando MongoDB e Node.js
Conforme discutido no tópico anterior, MongoDB é um dos bancos de dados mais populares usados junto com Node.js.
Durante este capítulo, veremos
Como podemos estabelecer conexões com um banco de dados MongoDB
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 banco de dados MongoDB.
Para o propósito deste capítulo, vamos supor que temos os dados MongoDB abaixo no lugar.
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 módulo MongoDB, execute o comando abaixo
npm install mongodb
- Criar e fechar uma conexão com um banco de dados MongoDB. O trecho de código a seguir mostra como criar e fechar uma conexão com um banco de dados MongoDB.
Explicação do código:
- A primeira etapa é incluir o módulo mangusto, o que é feito por meio da função require. Uma vez que este módulo esteja instalado, podemos usar as funções necessárias disponíveis neste módulo para criar conexões com o banco de dados.
- Em seguida, 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 banco de dados MongoDB.
- A próxima etapa é realmente conectar-se ao nosso banco de dados. A função de conexão leva em 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 "Connected" será gravada no console conforme mostrado abaixo.
- Consultando dados em um banco de dados MongoDB - Usando o driver MongoDB, também podemos buscar dados no banco de dados MongoDB.
A seção a seguir 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 banco de dados MongoDB, que contém todos os documentos relacionados aos funcionários. Cada documento possui um id de objeto, nome de funcionário e 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 obtidos de um banco de dados. O cursor é então usado para iterar através dos diferentes registros no banco de dados. Aqui estamos definindo um nome da variável chamada cursor que será usado para armazenar o ponteiro para os registros buscados no banco de dados.) que aponta para os registros que são buscados na coleção MongoDb. Também temos a facilidade de especificar a coleção 'Funcionário' da qual buscar os registros. A função find () é usada para especificar que queremos recuperar todos os documentos da coleção MongoDB.
-
Agora estamos iterando através de nosso cursor e para cada documento no cursor vamos executar 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 de um banco de dados. Isso pode ser feito especificando a condição de pesquisa na função find (). Por exemplo, suponha que se você quisesse apenas buscar o registro que tem o nome do funcionário como Guru99, então esta declaração pode ser escrita da seguinte maneira
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.
Resultado:
Da saída,
- Você poderá ver claramente que todos os documentos da coleção foram recuperados. Isso é possível usando o método find () da conexão mongoDB (db) e iterando por 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 pela biblioteca MongoDB. O trecho de código a seguir 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 da biblioteca MongoDB para inserir um documento na coleção Employee.
- Estamos especificando os detalhes do documento do que precisa ser inserido na coleção Employee.
Se você verificar agora o conteúdo de seu banco de dados MongoDB, 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 no MongoDB
- Use 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 tem 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 pela biblioteca MongoDB. O trecho de código a seguir 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" da biblioteca MongoDB, que é usado para atualizar um documento em uma coleção mongoDB.
- Estamos especificando os critérios de pesquisa de qual documento precisa ser atualizado. Em nosso caso, queremos encontrar o documento que tem o EmployeeName de "NewEmployee".
- Em seguida, queremos definir o valor de EmployeeName do documento de "NewEmployee" para "Mohan".
Se você verificar agora o conteúdo de seu banco de dados MongoDB, 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 no MongoDB
- Use 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 tem o id de funcionário 4.
- Excluindo documentos em uma coleção - os documentos podem ser excluídos em uma coleção usando o método "deleteOne" fornecido pela biblioteca MongoDB. O trecho de código a seguir 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" da biblioteca MongoDB, que é usado para excluir um documento em uma coleção mongoDB.
- Estamos especificando os critérios de pesquisa de qual documento deve ser excluído. No nosso caso, queremos encontrar o documento que tem o EmployeeName de "Mohan" e excluir este documento.
Se você verificar agora o conteúdo de seu banco de dados MongoDB, encontrará o registro com Employeeid de 4 e EmployeeName de "Mohan" excluídos da coleção Employee.
Para verificar se os dados foram atualizados corretamente no banco de dados, você precisa executar os seguintes comandos no MongoDB
- Use 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 do funcionário. 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
Construir um aplicativo com uma combinação de express e MongoDB é bastante comum hoje em dia.
Ao trabalhar com aplicativos JavaScript baseados na web, normalmente usaremos o termo MEAN stack.
- O termo pilha MEAN refere-se a uma coleção de tecnologias baseadas em JavaScript usadas para desenvolver aplicativos da web.
- MEAN é um acrônimo para MongoDB, ExpressJS, AngularJS e Node.js.
Portanto, é sempre bom entender como Node.js e MongoDB trabalham juntos para entregar aplicativos que interagem com bancos de dados de back-end.
Vejamos um exemplo simples de como podemos usar "express" e "MongoDB" juntos. Nosso exemplo usará a mesma coleção Employee no banco de dados MongoDB EmployeeDB.
Agora vamos incorporar o Express para exibir os dados em nossa página da web quando solicitado pelo usuário. Quando nosso aplicativo é executado em Node.js, pode ser necessário navegar até a URL http: // localhost: 3000 / Employeeid .
Quando a página for lançada, 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.
Etapa 1) Defina todas as bibliotecas que precisam ser usadas em nosso aplicativo, que em nosso caso é o MongoDB e a biblioteca expressa.
Explicação do código:
- Estamos definindo nossa biblioteca 'expressa', que será usada em nosso aplicativo.
- Estamos definindo nossa biblioteca 'expressa', que será usada em nosso aplicativo para conexão com nosso banco de dados MongoDB.
- Aqui, estamos definindo a URL de nosso banco de dados para conexão.
- Finalmente, estamos definindo uma string que será usada para armazenar nossa coleção de id de funcionário que precisa ser exibida no navegador mais tarde.
Etapa 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'. Portanto, sempre que alguém navegar para http: // localhost: 3000 / Employeeid de nosso aplicativo, 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 (). Em seguida, estamos atribuindo essa coleção a uma variável chamada cursor. Usando 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, vamos definir 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, estamos levando o funcionário por meio do comando "item.Employeeid". O resto do código é apenas para construir um código HTML adequado que permitirá que nossos resultados sejam exibidos de forma adequada no navegador.
Etapa 3) Nesta etapa, enviaremos nossa saída para a página da web e faremos com que nosso aplicativo escute 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 da web. O parâmetro 'res' nos permite enviar conteúdo para nossa página da web como uma resposta.
- Estamos fazendo com que nosso aplicativo Node.js inteiro escute na porta 3000.
Resultado:
Da saída,
- Isso mostra claramente que todos os IDs do funcionário na coleção Funcionário foram recuperados. Isso ocorre porque usamos o driver MongoDB para se conectar ao banco de dados e recuperar todos os registros de funcionários e, subsequentemente, usamos "expresso" 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 JSDeprecatedSymbolscursor.each(function(err, item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "";}});res.send(str);db.close();});});var server = app.listen(3000, function() {});
Nota: cursor.each pode estar obsoleto com base na versão do seu driver MongoDB. Você pode anexar // noinspection JSDeprecatedSymbols antes de cursor.each para contornar o problema. Como alternativa, você pode usar forEach. Abaixo está o código de amostra 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 + "";}}, function(err) {res.send(err);db.close();});});});var server = app.listen(8080, function() {});
Resumo
- Node.js é usado em conjunto com bancos de dados NoSQL para construir muitos aplicativos da web dos dias modernos. Alguns dos bancos de dados comuns usados são MySQL e MongoDB.
- Um dos módulos comuns usados para trabalhar com bancos de dados MongoDB é um módulo chamado 'MongoDB.' Este módulo é instalado por meio do gerenciador de pacotes Node.
- Com o módulo MongoDB, é 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 o MongoDB para entregar aplicativos modernos. A estrutura Express pode usar os dados retornados pelo driver MongoDB e exibir os dados para o usuário na página da web de acordo.