1
resposta

[Bug] Minha consulta GET pelo postman retorna um array vazio

Quando eu faço a consulta get, sempre retorna um array vazio. Meu banco de dados está com os dados inseridos, o link de conexão está correto.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade dbConnection.js

import mongoose, {mongo} from "mongoose";

async function connectaNaDatabase(){
    mongoose.connect("mongodb+srv://carlostorrecilhas1:<password>@cluster0.vva1yni.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0");
    return mongoose.connection;
}

export default connectaNaDatabase;

Livro.js

import mongoose from "mongoose";

const livroSchema = new mongoose.Schema({
    id: {type: mongoose.Schema.Types.ObjectId},
    titulo: {type: String},
    editora: {type: String},
    preco: {type: Number},
    paginas: {type: Number}
}, {versionKey: false});

const livros = new mongoose.model("livros", livroSchema);

export default livros;

APP.js

import express from 'express';
import connectaNaDatabase from './config/dbConnect.js';
import livros from "./models/Livro.js";
const app = express();
app.use(express.json());

const conexao = await connectaNaDatabase();

app.get("/listaLivros", async (req, res) => {
    try {
        const listaLivros = await livros.find({});
        res.status(200).json(listaLivros);   
    } catch (error) {
        console.error("Não funcionou", error)
    }
});

export default app;

server.js

import app from "./src/app.js"

const PORT = 3000;

app.listen(PORT, ()=>{
    console.log("Servidor escutando !")
})
1 resposta

Olá Agatha! Tudo bem?

Pelo que você descreveu e pelas informações do código que você compartilhou, parece que tudo está configurado corretamente para a conexão com o banco de dados e a definição do modelo. No entanto, o retorno de um array vazio na consulta GET pode indicar algumas possibilidades que vale a pena verificar:

  1. Nome da Coleção: No Mongoose, o nome da coleção é inferido do nome do modelo. Por padrão, o Mongoose pluraliza o nome do modelo para formar o nome da coleção. No seu caso, você definiu o modelo como livros, o que é correto, pois o Mongoose não alterará esse nome. No entanto, certifique-se de que no seu banco de dados MongoDB, a coleção realmente se chama livros. Às vezes, um simples erro de digitação ou diferença de maiúsculas/minúsculas pode causar esse problema.

  2. Conexão com o Banco de Dados: Verifique se a conexão com o banco de dados está sendo estabelecida corretamente. Você pode adicionar um listener para eventos de conexão no seu arquivo dbConnection.js para confirmar isso:

    mongoose.connection.on('connected', () => {
        console.log('Conexão com o MongoDB estabelecida com sucesso!');
    });
    
    mongoose.connection.on('error', (err) => {
        console.error('Erro na conexão com o MongoDB:', err);
    });
    
  3. Dados na Coleção: Certifique-se de que há dados na coleção livros. Você pode verificar isso diretamente através do MongoDB Atlas ou usando uma ferramenta como o MongoDB Compass.

Se após essas verificações o problema persistir, pode ser útil você compartilhar o seu código para que eu realize testes.

Espero que essas dicas ajudem a resolver o problema e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.