Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Meu Get pelo Postman exibe apenas um array vazio. A solução de 2 meses atrás não me ajudou.

Olá. Revi todas as instruções e linhas do código várias vezes e não consigo entender o que está acontecendo de errado. Todas as conexões estão funcionando e os dados no MongoDB são exibidos na coleção corretamente, mas quando faço a busca com o GET pelo postman, apenas retorna um array vazio como foi citado na dúvida de alguns meses atrás.

A solução apontada nesta dúvida de meses atrás indica que os dados estavam sendo guardados numa outra coleção (undefined), mas esse não parece ser o meu caso.

Já tentei alterar no modelo do código para que a letra inicial fosse maiúscula para ficar igual está no MongoDB mas também não funcionou. Já tentei alterar para o nome do DB em vez da coleção, e também o nome do DB seguido pela coleção com um ponto entre os dois, da forma que é exibido na tela do MongoDB, mas também não funcionou.

Agradeço desde já a atenção e espero conseguir entender o que estou fazendo de errado. Me pergunto se tem algo a ver com eu ter trocado a região do banco de dados para São Paulo em vez de deixar na padrão, mas aparentemente eu não consigo trocar essa configuração agora com a conta gratuita lá no Atlas.

1 resposta
solução!

OK, continuei mexendo por aqui e consegui solucionar criando uma nova Database pelo terminal. Segue abaixo um passo a passo de como estava e como que o problema acabou sendo resolvido:

Imagem mostrando minha coleção no Mongo DB Note que eu troquei tudo que tratava sobre "livros" para falar sobre "jogos", exatamente para saber se eu tinha realmente entendido como fazer os procedimentos em vez de apenas copiar o que estava sendo explicado na aula.

Na linha de conexão no código da API estava da seguinte forma: mongodb+srv://admin:password@cluster0.vmqsjqm.mongodb.net/jogateria?retryWrites=true&w=majority -- Note que após o endereço do mongodb aparecia o nome da minha database "jogateria", assim como na aula aparece o nome da database da instrutora ("livraria" naquele caso).

Após minhas várias tentativas de conseguir fazer com que a função GET no Postman retornasse o meu jogo cadastrado da forma que deveria acontecer, resolvi continuar as aulas e finalizei todas as configurações do CRUD. Foi então que eu vi que nada funcionava direito, pois a função POST retornava a mensagem de erro em vez de adicionar um item conforme desejado. Comecei a pensar se adiantaria alguma coisa mudar o nome do meu DB aí nesse link de conexão. Pensei* "será que ao invés de ter o nome do DB, deveria estar o nome da minha coleção?"* Foi então que eu alterei para mongodb+srv://admin:password@cluster0.vmqsjqm.mongodb.net/Jogos?retryWrites=true&w=majority

Note que eu também iniciei o "Jogos" com maiúscula para ficar igual eu tinha feito na minha coleção no MongoDB. Após fazer essa alteração, a função POST no postman funcionou conforme desejado e a GET também retornou os meus jogos cadastrados conforme desejado, embora só tenha retornado esse único jogo que eu tinha feito no POST e não o que já tinha sido criado antes. Foi então que acessei meu MongoDB de novo e notei que foi criada uma nova DB com uma nova coleção e são essas novas DB e Coleção que estão sendo referenciadas. Imagem mostrando minha coleção no MongoDB

Então é isso. Não sei exatamente o motivo, mas a linha de conexão original que o MongoDB passou e que estava adicionada ao código referenciando o nome da minha DB (Jogateria) corretamente, da mesma forma que o nome da DB da instrutora no vídeo estava sendo referenciada ali, não estava deixando criar nem referenciar o que já estava gravado nessa DB e em sua coleção. Imagino que talvez seja porque essa linha de conexão na verdade é uma linha de criação de DB e, ao ver que já tinha uma DB criada com esse nome ele não deixava acontecer (isso não explica o motivo de não aparecer nenhum erro no terminal). Ao alterar ali na linha de conexão por um novo nome, ele acabou criando uma DB nova, criou também uma coleção nova de acordo com a nossa linha de código do models e tudo deu certo.

Peço perdão por ter ressuscitado esse tópico e ter conseguido resolver antes de alguém me responder, mas acredito que essa descrição passo a passo sobre como eu consegui resolver possa ser útil para termos um melhor entendimento de qual era o problema original.

Abraço e muito obrigado a todos!