No arquivo dbConnect.js é feita a conexão com o banco criado no Mongo. No arquivo Livro.js, é criado um modelo através do mongoose.model, mas nesse arquivo a conexão feita anteriormente não é utilizada/importada.
No arquivo app.js, tanto a conexão quanto o modelo são importados (import db from "./config/dbConnect.js"; *e *import livros from "./models/Livro.js"
Porém, na requisição do .get('/livros') o método utilizado é um método do modelo importado (livros.find()). Em que momento é definido que livros.find vai buscar naquele banco específico, sendo que a constante utilizada na importação do banco (db) não é utilizada no código da rota?
Ps: no exemplo abaixo, se eu comentar as linhas do db.on e db.once, o funcionamento do get se mantém. Porém, se eu comentar a importação da conexão, a requisição não funciona
import express from "express";
import db from "./config/dbConnect.js";
import livros from "./models/Livro.js"
db.on("error", console.log.bind(console, 'Erro de conexão'))
db.once("open", ()=>{
console.log('Conexão com o banco feita com sucesso')
})
const app = express();
app.use(express.json());
// const livros = [
// {
// "id": 1,
// "titulo": "Senhor dos aneis"
// },
// {
// "id": 2,
// "titulo": "O hobbit"
// }
// ]
app.get('/', (req, res)=>{
res.status(200).send('Curso de Node');
})
app.get('/livros/:id', (req, res)=>{
let index = getById(req.params.id);
res.status(200).json(livros[index])
})
app.get('/livros', (req, res)=>{
livros.find((err, livros) =>{
res.status(200).json(livros);
})
})