Nesta seção do nosso e-book, vamos abordar um dos aspectos mais importantes do desenvolvimento de APIs em NodeJS: a criação de um CRUD (Create, Read, Update, Delete) com NodeJS e MongoDB. Este é um passo crucial para qualquer desenvolvedor que deseja construir aplicações robustas e escaláveis.
Conexão com o banco de dados MongoDB
Antes de começarmos a criar nosso CRUD, precisamos estabelecer uma conexão com o banco de dados MongoDB. Existem várias maneiras de fazer isso, mas uma das mais comuns é usar o pacote Mongoose, que é um ODM (Object Data Modeling) para MongoDB e Node.js.
Para instalar o Mongoose, você pode usar o npm (Node Package Manager) com o seguinte comando:
npm install mongoose
Depois de instalado, você pode começar a usá-lo para se conectar ao MongoDB. Aqui está um exemplo de como fazer isso:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true, useUnifiedTopology: true});
Este código se conecta a uma instância local do MongoDB que está executando no seu computador. Se você estiver usando um serviço de banco de dados MongoDB hospedado, como o MongoDB Atlas, você precisará substituir 'mongodb://localhost/test' pela URL de conexão fornecida pelo seu serviço de hospedagem.
Criando um CRUD com NodeJS e MongoDB
Uma vez que temos nossa conexão com o MongoDB estabelecida, podemos começar a criar nosso CRUD. Para fazer isso, primeiro precisamos definir um esquema para nossos dados. Em Mongoose, um esquema é uma estrutura que define a forma dos documentos dentro de uma coleção MongoDB.
Aqui está um exemplo de como você pode definir um esquema para um blog post:
const blogSchema = new mongoose.Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
Uma vez que temos nosso esquema definido, podemos criar um modelo a partir dele. Um modelo é uma classe com a qual construímos documentos. No exemplo a seguir, criamos um modelo 'Blog' a partir do nosso esquema 'blogSchema':
const Blog = mongoose.model('Blog', blogSchema);
Com nosso modelo em mãos, podemos começar a criar, ler, atualizar e deletar documentos. Aqui está um exemplo de como você pode criar um novo documento usando nosso modelo 'Blog':
const blogPost = new Blog({ title: 'My First Post', author: 'John Doe', body: 'This is my first blog post.' });
blogPost.save(function (err, blogPost) {
if (err) return console.error(err);
console.log(blogPost.title + " saved to blog collection.");
});
Para ler documentos, você pode usar o método 'find'. Aqui está um exemplo de como você pode encontrar todos os posts de blog de um determinado autor:
Blog.find({ author: 'John Doe' }, function(err, blogs) {
if (err) return console.error(err);
console.log(blogs);
});
Para atualizar um documento, você pode usar o método 'updateOne'. Aqui está um exemplo de como você pode atualizar o título de um post de blog:
Blog.updateOne({ title: 'My First Post' }, { title: 'My Updated Post' }, function(err, res) {
if (err) return console.error(err);
console.log(res);
});
Finalmente, para deletar um documento, você pode usar o método 'deleteOne'. Aqui está um exemplo de como você pode deletar um post de blog:
Blog.deleteOne({ title: 'My Updated Post' }, function(err) {
if (err) return console.error(err);
console.log('Post deleted');
});
Com isso, concluímos nossa introdução à criação de um CRUD com NodeJS e MongoDB. No próximo capítulo, vamos explorar mais detalhadamente cada uma dessas operações e aprender como lidar com erros e validar dados.