Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
12
respostas

Aula 4 Acessando uma API externa, retornando valores diferentes

Aula 4 Acessando uma API externa

Olá tudo bom pessoal?

Seguinte na Aula 4 no vídeo "Acessando uma API externa", é mostrado como fazer uma requisição do tipo GET da api, onde é retornado uma array de quatro elementos, porém após feito o exercício reparei que retornou dois, com informações diferentes do mostrado em aula. Fui pesquisar o arquivo database.js da api, e verifiquei que está como no vídeo, com quatro elementos, segue abaixo o código:

fetch('http://localhost:8000/api/autor')
  .then(res => res.json())
  .then(res => console.log(res.data));

Retorna:

0: Object { id: 8, nome: "autor", livro: "teste", … }​
1: Object { id: 10, nome: "Paulo", livro: "safdsfds", … }​
length: 2

Preciso da ajuda de vocês para saber o porquê está retornando valores diferentes.

Obrigado

12 respostas

Fala ai Robson, tudo bem? Desculpa mas eu não entendi a diferença, poderia postar o retorno das duas API's?

Caso seja a quantidade de itens no array pode ser porque outras pessoas estejam usando a mesma API (caso você esteja usando a API do Heroku).

Pode ser alguma diferença no banco de dados também.

Espero ter ajudado.

Boa noite, Robson! Como vai?

Vc chegou a modificar alguma coisa na API? Poderia descrever o processo que vc fez desde que baixou a API até o momento em que vc testou a requisição a partir do seu projeto? Com essas informações eu poderei entender melhor a situação para tentar te ajudar!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Tudo beleza Matheus,

Então o meu está retornando:

0: Object { id: 8, nome: "autor", livro: "teste", … }
1: Object { id: 10, nome: "Paulo", livro: "safdsfds", … }
length: 2

e o do instrutor está como no database.js da api:

0: Object { id: 8, nome: "Paulo Scalercio", livro: "React", … }
1: Object { id: 10, nome: "Marcos", livro: "Design", … }
2: Object { id: 12, nome: "Daniel", livro: "java", … }
3: Object { id: 14, nome: "Nico", livro: "Aprenda Alemão", … }
length: 4

Fiz o mesmo procedimento que ele fez, a api foi disponibilizada por ele, não modifiquei nada.

Obrigado

Olá tudo beleza Gabriel,

Não modifiquei nada na API, somente baixei e segui com a requisição como na aula:

fetch('http://localhost:8000/api/autor')
  .then(res => res.json())
  .then(res => console.log(res.data));
solução!

olá, o meu deu isso também. No caso, eu exclui o node_modules e o db.sqlite, entao dei um npm install novamente, em seguida o npm start e aparentemente deu certo

Olá Amanda, fiz os procedimentos indicados por você e deu certo, gostaria de saber como chegou nessa conclusão para resolver o problema, pois quero entender por que estava pegando dados diferentes.

Muito obrigado pelo apoio! Grande abraço!

Obs: Após a sua resposta, marcarei o seu post como solução.

ahhh fico feliz que tenha dado certo!!! Então, eu fiquei futricando e tentando várias coisas até conseguir resolver e entender. De começo, não fazia sentido pra mim já ter aqueles dados preenchidos no db.sqlite (que eram diferentes dos que estavam na api), e como eu queria alterar dados diferentes no insert da API ele não estava processando as minhas informações e já vinha outras como padrão. Eu procurei o github com os códigos do professor e vi que no repositorio dele não tinha o arquivo db.sqlite, foi ai que resolvi excluir ele pra saber se ele computava minha API com as novas informações e, pra ter que instalar ele e todas as configurações novamente, exclui o node_modules e rodei tudo de novo, sem o db.sqlite pra ele atualizar novamente para o que eu queria. Eu ainda nao entendi direito porque ele pegou dados diferentes, ao meu ver pelo que analisei, ele não conseguia pegar os da API porque já vinha com o arquivo db.sqlite com aquelas informações definidas no banco dele, entao a solução seria atualizar as informações... Não sei se faz sentido e se to explicando direito a logica, mas foi essa loucura ai kkkkkkkkkk

Legal Amanda, então foi uma questão de análise e percepção. Parabéns pela resolução.

Muito obrigado.

Grande Abraço!

Boa Amanda e Robson, fico feliz por terem resolvido o problema.

Desculpa a demora Robson, eu tinha arquivado o email da primeira resposta sem querer. Só vi quando vocês voltaram a responder.

Sobre o problema:

O arquivo db.sqlite existente no repositório está com dados diferentes mesmo, ele está com apenas os dois usuários.

Uma vez que vocês apagaram e subiram a API novamente, ele passou pelo seguinte trecho de código:

let db = new sqlite3.Database(DBSOURCE, (err) => {
    if (err) {
      // Cannot open database
      console.error(err.message)
      throw err
    }else{
        console.log('Connected to the SQLite database.')
        db.run(`CREATE TABLE autor (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            nome text UNIQUE, 
            livro text , 
            preco INTERGER, 
            CONSTRAINT nome_unique UNIQUE (nome)
            )`,
        (err) => {
            if (err) {
                // Table already created
            }else{
                // Table just created, creating some rows
                var insert = 'INSERT INTO autor (nome, livro, preco) VALUES (?,?,?)'
                db.run(insert, ["Paulo Scalercio","React", 1200])
                db.run(insert, ["Marcos","Design",800])
                db.run(insert, ["Daniel","java",150])
                db.run(insert, ["Nico","Aprenda Alemão",9999])
            }
        });  
    }
});

Ou seja, ele está criando o novo arquivo com os quatro usuários.

Não precisaria remover o node_modules e realizar o npm install novamente, apenas remover o arquivo db.sqlite e subir o servidor é o suficiente.

O ideal seria que o projeto da API viesse sem o db.sqlite e deixa a própria API criá-lo quando a mesma subisse.

Espero ter ajudado, desculpa a demora e bons estudos.

ahhh agora sim entendi melhor muito obrigada!!

Beleza Matheus, ficou bem explicado, muito obrigado.

Abraço!

Magina, sempre que precisarem não deixem de criar suas dúvidas.

Abraços e bons estudos.