Tutorial Node.js + MongoDB criando um CRUD. – Irias Lab
Tutorial Node.js + MongoDB criando um CRUD.
Neste artigo, vamos ver o básico da utilização do MongoDB. Vamos criar uma API REST com o Node.js, realizando um CRUD (create, read, update e delete) completo. O MongoDB é um banco de dados distribuído, baseado em documentos. Ele é um banco de dados do tipo NoSQL, este tipo de banco de dados, não possui relacionamento entre suas tabelas. Diferente por exemplo de um banco como o MySQL, onde existe o relacionamento entre os dados.
Vamos começar realizando a instalação do MongoDB. Neste tutorial estou utilizando o Linux, veja no site oficial como realizar a instalação em outros sistemas operacionais. Acesse o terminal Linux e utilize os seguintes comandos para instalação.
Após instalar verifique o status do mongo com o comando.
Depois de realizar a instalação do mongodb, pelo terminal Linux utilize o comando abaixo para acessar o terminal do MongoDB.
Para listar os bancos de dados disponíveis utilize o comando.
Para acessar ou criar um novo banco de dados, utilize o comando.
Substitua o app pelo nome que deseja para seu banco de dados. Após isto, se utilizarmos novamente o comando: show dbs; para listar os bancos de dados, vamos notar que nosso banco não aparece na listagem. Isto é devido ao banco só realmente ser criado, quando é inserido o primeiro documento no mesmo.
Vamos utilizar o comando abaixo, para criarmos e inserir dados em nossa primeira collection, que é o equivalente a uma tabela no MySQL.
db.test.insertOne({"cod": "1", "test":  "Primeiro Json para teste"})
Substitua o test pelo nome que deseja para sua collection. No MongoDB, os dados são inseridos e manipulados utilizando o formato JSON. Agora para visualizar os dados inseridos em nossa collection utilize o comando.
Agora, ao utilizar o comando show dbs; conseguimos visualizar o nosso banco de dados na listagem. Podemos também utilizar o comando: show collections; para visualizar nossas collections. Vamos realizar o update dos dados no MongoDB, utilize o comando abaixo para o update.
db.test.updateOne({"cod": "1"}, {$set: {"test": "Teste de edição de registro"}})
Nesta função passamos dois JSON, o primeiro e o filtro para que seja selecionado qual registro será atualizado. O segundo contém os novos dados do update, utilizamos o $set (agregação) ele vai atualizar as chaves existentes, caso não exista a chave, ele adiciona ela ao documento.
Por último, vamos realizar o delete do documento, para excluir os dados vamos utilizar o comando:
db.test.deleteOne({"cod": "1"})
Como no update, passamos um JSON que é o filtro para que seja excluído o registro que desejamos.
Vamos criar nossa API REST com o Node.js, que realizará as operações CRUD no MongoDB. Para criar nossa API, vamos utilizar os seguintes pacotes:
express – Framework Node.js para criarmos a base da aplicação.
body-parser – Middleware para trabalharmos com o corpo da requisição.
mongodb – Drive oficial do MongoDB para Node.js
Para criar esta aplicação, é um pré-requisito ter o Node.js e o NPM instalados na máquina. Não irei abordar a fundo a instalação de ambos, para download e instalação acesse o link oficial: https://nodejs.org/en/download/.
Primeiro vamos criar nosso package.json, crie o arquivo: package.json e insira o seguinte conteúdo nele:
"description": "Tutorial Node.js + MongoDB criando um CRUD.",
"author": "Anderson Irias <contato@irias.com.br>",
"mongodb": "^3.6.3"
Após isso, utilize o comando abaixo para instalar as dependências do projeto.
Depois vamos criar o arquivo da nossa aplicação, nossa API terá somente 1 arquivo. Crie o arquivo app.js e insira o seguinte conteúdo nele:
const APP_PORT = 8080;
const APP_HOST = 'localhost';
const MONGO_HOST = 'mongodb://localhost:27017/';
const MONGO_DB = 'app';
const MONGO_COLLECTION = 'test';
mongoClient.connect(MONGO_HOST, (err, client) => {
const database = client.db(MONGO_DB);
database.collection(MONGO_COLLECTION).insertOne(req.body, (err) => {
app.get('/read', (req, res) => {
database.collection(MONGO_COLLECTION).find({ cod: req.query.cod }).toArray((err, result) => {
app.put('/update', (req, res) => {
database.collection(MONGO_COLLECTION).updateOne({ cod: req.query.cod }, { $set: req.query }, (err) => {
database.collection(MONGO_COLLECTION).deleteOne({ cod: req.query.cod }, (err) => {
app.listen(APP_PORT, APP_HOST);
Em nosso app.js, primeiro realizamos a inclusão das dependências. Depois criamos as variáveis com as configurações da aplicação.
Porta da API.
Host da API.
Host de conexão com o MongoDB.
Nome do banco de dados no MongoDB.
Nome da collection que estamos trabalhando.
Vamos utilizar o mesmo banco de dados e collection, que estávamos trabalhando anteriormente.
Nossas rotas da API utilizam os HTTP request Methods: post (create), get (read), put (update) e delete (delete). Leia no site da mozilla para mais informações sobre os métodos HTTP.
O funcionamento da nossa API é bem simples, recebemos a requisição na rota, e depois utilizando as funções do Drive mongodb, realizamos as operações no banco de dados. As operações são as mesmas que fizemos pelo terminal, para mais exemplos leia na documentação do drive.
Para iniciar nossa API, utilize o comando:
Para realizar o teste em nossa API, pode ser utilizado o utilitário CURL pelo terminal Linux. Abaixo as requisições feitas com ele.
curl --location --request POST 'http://localhost:8080/create' \
"teste": "Json para teste"
curl --location --request GET 'http://localhost:8080/read?cod=1'
curl --location --request PUT 'http://localhost:8080/update?cod=1&teste=Teste%20de%20edi%C3%A7%C3%A3o'