Solucionado (ver solução)
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.