3
respostas

GET retornando uma array vazia

ao fazer a requisição GET, a resposta veio como um array vazio. Porém, meu banco de dados não parece ter nenhum problema e a conexão foi feita com sucesso (uma vez que o console apresenta a mensagem programada em caso de êxito). Existe outro motivo que pode ocasionar este problema?

livros.js: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeApp.js: 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 Anéis"}, // {id: 2, "titulo:": "O Hobiit"} // ]

app.get('/', (req, res) => {
    res.status(200).send('Curso de Node');
})

app.get('/livros', (req, res) => {
    livros.find((err, livros) => {
        res.status(200).json(livros)
    })
})

app.get('/livros/:id', (req, res) => {
    let index = buscaLivro(req.params.id);
    res.json(livros[index]);
})

app.post('/livros', (req, res) => {
    livros.push(req.body);
    res.status(201).send('Livro foi cadastrado com sucesso')
})

app.put('/livros/:id', (req, res) => {
    let index = buscaLivro(req.params.id);
    livros[index].titulo = req.body.titulo;
    res.json(livros);
})

app.delete('/livros/:id', (req, res) => {
    let {id} = req.params;
    let index = buscaLivro(id);
    livros.splice(index, 1);
    res.send('Livro ${id} removido com sucesso');
})

function buscaLivro(id){
    return livros.findIndex(livro => livro.id == id)
}

export default app

db.Connect.js: Insira aqui a descrição dessa imagem para ajudar na acessibilidade Banco de dados: Insira aqui a descrição dessa imagem para ajudar na acessibilidade Postman: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

Olá Raquel, tudo bem?

Analisando os seus códigos e prints pude perceber que a coleção que você está usando no link da conexão é diferente da que é mostrada no print que você mandou.

Quando inserimos o link do nosso banco no projeto temos que adicionar o nome da coleção que estamos usando, caso já esteja criada que é o caso da aula, você fez isso, depois da última barra você adicionou o nome da coleção, porém não é o mesmo nome da que você mostra no print.

Então, para solucionar esse problema de sua requisição estar vindo com a lista vazia, basta alterar o nome da coleção, no link, para "alura-node". Como mostrado na imagem abaixo:

mongoose.connect("mongodb+srv://alura:123@alura.dkjed.mongodb.net/alura-node");

Espero que eu tenha lhe ajudado. Caso tenha mais algum problema ou dúvida, relacionado com este tópico, estarei a disposição para ajudá-la.

Abraços e bons estudos!

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

Tive o mesmo problema, mas o nome da coleção está correto e mesmo assim nenhuma informação aparece no Postman.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software