2
respostas

Para quem teve problemas durante a confecção do mongoose.connect()

A nova versão do Mongoose não aceita retornos por callback, sendo assim é aconselhado pelos desenvolvedores da lib o uso de async/await. Logo, se você confeccionar seu app.get exatamente como a instrutora diz, sem ter utilizado a versão apresentada no curso, provavelmente encontrará erros no retorno. (empty array, p.ex)

Para resolver isso, basta alterar o código do app.get() - bem como os demais metodos http - da seguinte forma:

app.get('/livros', async (req, res) => {
    try {
        const livrosResultado = await livros.find();
        res.status(200).json(livrosResultado);
    } catch (error) {
        console.error('Error fetching books:', error);
        res.status(500).json({ error: 'Erro ao resgatar o livro' });
    }
});

Quanto ao connect(), em dbConnect.js, SUGIRO a string abaixo para quem instalou direto a última versão:

mongoose.connect("mongodb+srv://<BANCO>:<SENHA>@cluster0.zkin2au.mongodb.net/alura-node?retryWrites=true&w=majority");

Bons estudos!

2 respostas

Olá, Amanda!

Muito obrigado por compartilhar sobre a confecção do mongoose.connect(), a nova versão do Mongoose não aceita de fato retornos por callback e é recomendado o uso de async/await.

A solução que você sugeriu para alterar o código do app.get() está correta. Assim, você pode utilizar o await para aguardar a resposta da função livros.find() e então retornar o resultado.

Excelente, estava com o mesmo problema me ajudou muito.

A conexão com o banco acontecia corretamente mais ao tentar retornar dados a lista vinha vazia.

Parabéns e mais uma vez obrigado!