Conecte-se a um MongoDB database usando o Node.js 3.3.2
Lauren Schaefer5 min read • Published Feb 04, 2022 • Updated Oct 01, 2024
SNIPPET
Usa Node.js? Quer aprender MongoDB? Esta série de blogs é para você!
Nesta série de Início rápido, mostrarei os fundamentos de como começar a usar o MongoDB com o Node.js. Na publicação de hoje, vamos abordar como se conectar a um MongoDB database a partir de um script Node.js, recuperando uma lista de bancos de dados e imprimindo os resultados em seu console.
Esta publicação usa o MongoDB 4.0, Driver MongoDB Node.js 3.3.2 e Node.js 10.16.3.
Clique aqui para ver uma versão mais recente desta publicação que usa o MongoDB 4.4, Driver MongoDB Node.js 3.6.4 e Node.js 14.15.4.
Prefere aprender por vídeo? Podemos ajudar você. Confira o vídeo abaixo que mostra como se conectar e como realizar as operações CRUD.
Antes de começarmos, precisamos garantir que você tenha concluído algumas etapas de pré-requisito.
Primeiro, verifique se você tem uma versão compatível do Node.js instalada (o driver Node.js do MongoDB requer Node 4.x ou superior e, para esses exemplos, usei o Node.js 10.16.3).
O driver Node.js do MongoDB permite que você interaja facilmente com MongoDB databases dentro de aplicativos Node.js. Você precisará do driver para se conectar ao seu banco de dados e executar as queries descritas nesta série de Início rápido.
Se você não tiver o driver Node.js do MongoDB instalado, poderá instalá-lo com o seguinte comando.
1 npm install mongodb
No momento em que este artigo foi escrito, essa versão instalada 3.3.2 do driver. A execução do
npm list mongodb
exibirá o número da versão do driver atualmente instalado. Para obter mais detalhes sobre o driver e a instalação, consulte a documentação oficial.Agora, você precisará de um MongoDB database. A maneira mais fácil de começar a usar o MongoDB é por meio do Atlas, o banco de dados como serviço totalmente gerenciado do MongoDB.
Vá para o Atlas e crie um novo cluster na camada gratuita. Em um nível alto, um cluster é um conjunto de nós onde as cópias do banco de dados serão armazenadas. Depois que a camada for criada, carregue os dados de exemplo. Se você não estiver familiarizado com a criação de um novo cluster e com o carregamento de dados de exemplo, confira este tutorial em vídeo do MongoDB Developer Advocate Maxime Beugnet.
Comece hoje mesmo com um cluster M0 no Atlas. É gratuito para sempre e é a maneira mais fácil de experimentar as etapas desta série de blogs.
A etapa final é preparar seu cluster para conexão.
No Atlas, navegue até seu cluster e clique em CONNECT. O Assistente de conexão do cluster será exibido.
O assistente solicitará que você adicione seu endereço IP atual à lista de acesso IP e crie um usuário MongoDB, caso ainda não o tenha feito. Certifique-se de anotar o nome de usuário e a senha que você usa para o novo usuário do MongoDB, pois precisará deles em uma etapa posterior.
Em seguida, o assistente solicitará que você escolha um método de conexão. Selecione Conectar sua aplicação. Quando o assistente solicitar que você selecione a versão do driver, selecione Node.js e 3.0 ou posterior. Copie a string de conexão fornecida.
Para mais detalhes sobre como acessar o Assistente de Conexão e concluir os passos descritos acima, consulte a documentação oficial.
Agora que tudo está configurado, é hora de programar! Vamos escrever um script Node.js que se conecta ao seu banco de dados e lista os bancos de dados em seu cluster.
O módulo MongoDB exporta
MongoClient
e é isso que usaremos para nos conectarmos a um MongoDB database. Podemos usar uma instância do MongoClient para nos conectarmos a um cluster, acessar o banco de dados dele e fechar a conexão com ele.1 const { MongoClient } = require('mongodb');
Vamos criar uma função assíncrona chamada
main()
na qual nos conectaremos ao cluster do MongoDB, chamaremos funções que consultam nosso banco de dados e nos desconectaremos do nosso cluster.A primeira coisa que precisamos fazer dentro de
main()
é criar uma constante para o nosso URI de conexão. O URI de conexão é a string de conexão que você copiou no Atlas na seção anterior. Ao colar a string de conexão, não se esqueça de atualizar <username>
e <password>
para que sejam as credenciais do usuário que você criou na seção anterior. A string de conexão inclui um placeholder <dbname>
. Para estes exemplos, usaremos o banco de dados sample_airbnb
, portanto, substitua <dbname>
por sample_airbnb
.Observação: o nome de usuário e a senha fornecidos na string de conexão NÃO são os mesmos das credenciais do Atlas.
1 /** 2 * Connection URI. Update <username>, <password>, and <your-cluster-url> to reflect your cluster. 3 * See https://docs.mongodb.com/ecosystem/drivers/node/ for more details 4 */ 5 const uri = "mongodb+srv://<username>:<password>@<your-cluster-url>/sample_airbnb?retryWrites=true&w=majority";
Agora que temos nosso URI, podemos criar uma instância do MongoClient.
1 const client = new MongoClient(uri);
Observação: ao executar esse código, você poderá ver DeprecationWarnings em torno da string de URL
parser
e do mecanismo Server Discover and Monitoring. Se você vir esses avisos, poderá removê-los passando opções para o MongoClient. Por exemplo, você poderia instanciar o MongoClient chamando new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true })
. Consulte a documentação da API do driver MongoDB Node.js para obter mais informações sobre essas opções.1 await client.connect();
Agora podemos interagir com nosso banco de dados. Vamos construir uma função que imprima os nomes dos bancos de dados neste cluster. Muitas vezes, é útil conter essa lógica em funções bem nomeadas para melhorar a legibilidade de sua base de código. Ao longo desta série, criaremos novas funções semelhantes à função que estamos criando aqui à medida que aprendermos a escrever diferentes tipos de queries. Por enquanto, vamos chamar uma função chamada
listDatabases()
.1 await listDatabases(client);
Vamos envolver nossas chamadas para funções que interagem com o banco de dados em uma declaração
try/catch
para lidarmos com quaisquer erros inesperados.1 try { 2 await client.connect(); 3 4 await listDatabases(client); 5 6 } catch (e) { 7 console.error(e); 8 }
Queremos ter certeza de que fechamos a conexão com nosso cluster, portanto, terminaremos nosso
try/catch
com uma declaração final.1 finally { 2 await client.close(); 3 }
Quando tivermos escrito nossa função
main()
, precisamos chamá-la. Vamos enviar os erros para o console.1 main().catch(console.error);
Juntando tudo, nossa função
main()
e nossa chamada para ela serão parecidas com a seguinte.1 async function main(){ 2 /** 3 * Connection URI. Update <username>, <password>, and <your-cluster-url> to reflect your cluster. 4 * See https://docs.mongodb.com/ecosystem/drivers/node/ for more details 5 */ 6 const uri = "mongodb+srv://<username>:<password>@<your-cluster-url>/test?retryWrites=true&w=majority"; 7 8 9 const client = new MongoClient(uri); 10 11 try { 12 // Connect to the MongoDB cluster 13 await client.connect(); 14 15 // Make the appropriate DB calls 16 await listDatabases(client); 17 18 } catch (e) { 19 console.error(e); 20 } finally { 21 await client.close(); 22 } 23 } 24 25 main().catch(console.error);
Na seção anterior, fizemos referência à função
listDatabases()
. Vamos implementá-la!Essa função recuperará uma lista de bancos de dados em nosso cluster e imprimirá os resultados no console.
1 async function listDatabases(client){ 2 databasesList = await client.db().admin().listDatabases(); 3 4 console.log("Databases:"); 5 databasesList.databases.forEach(db => console.log(` - ${db.name}`)); 6 };
Você já implementado bastante código. Salve suas alterações e nomeie seu arquivo como
connection.js
. Para ver uma cópia do arquivo completo, visite o repositório GitHub nodejs-quickstart.Agora você está pronto para testar seu código! Execute seu script executando um comando como o seguinte em seu terminal:
node connection.js
.Você verá uma saída como a seguinte:
1 Databases: 2 - sample_airbnb 3 - sample_geospatial 4 - sample_mflix 5 - sample_supplies 6 - sample_training 7 - sample_weatherdata 8 - admin 9 - local
Hoje, você conseguiu se conectar a um MongoDB database a partir de um script Node.js, recuperar uma lista de bancos de dados em seu cluster e visualizar os resultados no console. Legal!
Agora que você está conectado ao seu banco de dados, continue com a próxima publicação desta série, na qual você aprenderá a executar cada uma das operações CRUD (criar, ler, atualizar e excluir, em português).
Enquanto isso, consulte os seguintes recursos:
Questões? Comentários? Queremos muito nos conectar com você. Participe da conversa nos fóruns da MongoDB Community.