Conecte-se a um MongoDB database usando Node.js
Avalie esse Início rápido
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.4, Driver MongoDB Node.js 3.6.4 e Node.js 14.15.4.
Clique aqui para ver uma versão anterior desta publicação que usa o MongoDB 4.0, Driver MongoDB Node.js 3.3.2 e Node.js 10.16.3.
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. A versão atual do MongoDB Node.js Driver requer Node 4.x ou superior. Para esses exemplos, usei Node.js 14.15.4. Consulte os documentos de compatibilidade do MongoDB para obter mais informações sobre qual versão do Node.js é necessária para cada versão do driver do Node.js.
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.6.4 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.6 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.1 async function main() { 2 // we'll add code here soon 3 }
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>/sample_airbnb?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 este 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.