Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Método GET (em /livros) retornando array vazio

Ao testar no postman o método GET para http://localhost:3000/livros/ ele me retorna status 200, porém um array vazio no body. No Atlas consta normalmente o livro cadastrado nas atividades anteriores.

Comparei meu código com o disponível no Github e está tudo igual, salvo alguma distração minha. Alguma sugestão do que eu poderia investigar para entender o que está acontecendo?

2 respostas
solução!

E aí, Vinícius! Tudo tranquilo?

Sei que a parada pode ser meio frustrante, mas tamo junto pra resolver o rolê do GET em "/livros" que tá retornando array vazio mesmo com status 200 e o livro no Atlas na moral.

1. Checa o Endpoint e a Rota

Bora confirmar se tu tá mandando bala no Postman no endpoint certo e se a rota no código tá na pista certa. Às vezes, uns errinhos de digitação podem zuar tudo.

// Tipo assim no Express
app.get('/livros', (req, res) => {
  // Aquela lógica pra pegar e mandar os livros
});

2. Dá um confere no Código do GET

Revisita o código do GET em "/livros". Se garante que tá consultando o banco do jeito certo. Manda uns logs pra ver o que tá rolando.

// Exemplo com Mongoose no MongoDB
Livro.find({}, (err, livros) => {
  if (err) {
    console.error('Erro na consulta de livros:', err);
    res.status(500).send('Erro interno ao consultar livros');
  } else {
    console.log('Livros encontrados:', livros);
    res.status(200).json(livros);
  }
});

3. Taca o Olho no Banco de Dados

Confirma se os dados tão de boa no banco. Pode usar o MongoDB Compass ou o terminal pra dar aquela olhada nos documentos em "livros".

// Comando mongo shell
use nomeDoSeuBanco
db.livros.find()

4. Tratamento de Erros Turbinado

Melhora o tratamento de erros pra pegar qualquer parada que tá passando batido.

// Tipo assim no Express com async/await
app.get('/livros', async (req, res) => {
  try {
    const livros = await Livro.find({});
    res.status(200).json(livros);
  } catch (error) {
    console.error('Erro pegando livros:', error);
    res.status(500).send('Erro interno ao pegar livros');
  }
});

5. Headers e CORS na Pista

Vê se as configurações de CORS e os headers tão na paz pra deixar o Postman chegar de boa.

// Config de CORS no Express
const cors = require('cors');
app.use(cors());

6. Middleware de Log

Pensa em jogar um middleware de log pra registrar as requests e responses no Express. Isso ajuda a manjar se tem algum esquema estranho rolando.

// Middleware de log daora
app.use((req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next();
});

Essas dicas devem te ajudar a desvendar esse mistério.

Opa! Valeu pela resposta!

Acho que era alguma instabilidade na visualização do MongoDB. Nas atividades seguintes eu continuei testando os outros métodos pelo Postman e tava tudo coerente. Os livros cadastrados com POST depois apareciam com GET, e o mesmo pras alterações com PUT e exclusões com DELETE. O que eu fazia com os outros métodos era refletido no retorno do GET na sequência. Só não tava refletindo na base da página do Atlas. Aí eu resolvi fuçar no Atlas pra ver se descobria alguma coisa e, quando cliquei pra voltar pra raiz do DB, a página ficou toda em branco, não carregava nada. Fechei o navegador, entrei de novo e depois do login acontecia a mesma coisa, página em branco. Fiz isso mais 2 ou 3 vezes, com o mesmo resultado e aí na terceira ou quarta vez entrou normal e quando fui até o banco de dados tava tudo atualizado. A base tava de acordo com as alterações que eu tinha feito com POST, PUT e DELETE enquanto testava os métodos.