Conectando-se ao Banco de Dados MongoDB - Node.js
Vamos continuar trabalhando no projeto do último tema e, em vez de usar um array como banco de dados, utilizaremos o MongoDB. Para interagir com o MongoDB, utilizaremos o Mongoose.
Primeiramente, vamos adicionar o mongoose ao projeto:
npm install mongoose --save
No tema anterior, projeto estava organizado da seguinte forma:
MVCAPP/ ├── controllers/ │ ├── homeController.js │ └── userController.js ├── routes/ │ ├── homeRouter.js │ └── userRouter.js ├── app.js ├── package.json └── node_modules/
Agora, precisamos adicionar a conexão com o MongoDB. Primeiro, vamos modificar o arquivo user.js
models
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
// Definindo o esquema
const userSchema = new Schema({
name: String,
age: Number
});
module.exports = mongoose.model("User", userSchema);
Agora, o modelo User
userSchema
Em seguida, na pasta controllers
userController.js
const User = require("../models/user.js");
exports.addUser = function (request, response) {
response.render("create.hbs");
};
exports.getUsers = async function (request, response) {
const allUsers = await User.find({});
response.render("users.hbs", { users: allUsers });
};
exports.postUser = async function (request, response) {
if (!request.body) return response.sendStatus(400);
const userName = request.body.name;
const userAge = request.body.age;
const user = new User({ name: userName, age: userAge });
await user.save();
response.redirect("/users");
};
No método getUsers()
User.find()
users.hbs
No método postUser()
User
save()
O arquivo userRouter.js
routes
userController
const express = require("express");
const userController = require("../controllers/userController.js");
const userRouter = express.Router();
userRouter.use("/postuser", userController.postUser);
userRouter.use("/create", userController.addUser);
userRouter.use("/", userController.getUsers);
module.exports = userRouter;
Por fim, vamos modificar o arquivo principal da aplicação, app.js
const express = require("express");
const mongoose = require("mongoose");
const app = express();
const userRouter = require("./routes/userRouter.js");
const homeRouter = require("./routes/homeRouter.js");
app.set("view engine", "hbs");
app.use(express.urlencoded({ extended: false }));
app.use("/users", userRouter);
app.use("/", homeRouter);
app.use(function (req, res) {
res.status(404).send("Not Found");
});
async function main() {
try {
await mongoose.connect("mongodb://127.0.0.1:27017/usersdb");
app.listen(3000);
console.log("Servidor aguardando conexões...");
} catch (err) {
return console.log(err);
}
}
main(); // Inicia a aplicação
// Lida com a interrupção do programa (ctrl-c)
process.on("SIGINT", async () => {
await mongoose.disconnect();
console.log("Aplicação encerrada");
process.exit();
});
Agora, o servidor começa a aceitar requisições após a conexão com o banco de dados MongoDB ser estabelecida.
Todos os outros arquivos permanecem inalterados.
Vamos executar a aplicação, acessar o endereço http://localhost:3000/users/create

Após a adição bem-sucedida, os dados serão salvos no banco de dados, e você será redirecionado para uma página onde poderá ver todos os dados adicionados anteriormente.