[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Renato Machado
Criador Renato Machado 09/02/2023

ola professor Carlos, estou tentando para fins didatico, consumir a Api com javascript puro, porem qdo utilizo o paginate na Api do laravel tenho erro: Uncaught (in promise) TypeError: itens.forEach is not a function

Minha Api:

https://produtos.acessohost.com.br/api/products

Url que esta consumindo

https://acessohost.com.br/testeApi/

Meu script para consumir em js:

async function list(){

const url = "https://produtos.acessohost.com.br/api/products";

const params = {

method : 'GET',

mode: 'cors',

cache: 'default'

};

const response = await fetch(url, params);

const data = await response.json();

console.log("Resultado", data);

let itens = data; 

itens.forEach(item =>{ let lista = document.querySelector(".lista"); lista.innerHTML += `

  • Name: ${item.name}
  • URL: ${item.description}
  • URL: ${item.image}

`;

});

}

list();

 

**IMPORTANTE - qdo retiro a paginação da API, lista normalmente os produtos

Manager Carlos Ferreira 09/02/2023

Olá, Renato!
Como vai?

Tem o código no GitHub? Fica mais fácil a visualização;

Carlos Ferreira
Criador Renato Machado 09/02/2023

https://github.com/renatoribeiromachado/apiProdutosLaravel

Renato Machado
Manager Carlos Ferreira 09/02/2023

O código JS está onde mesmo?

E qual é o erro mesmo, quando pagina?

Carlos Ferreira
Criador Renato Machado 09/02/2023

Codigo JS

https://acessohost.com.br/testeApi/

Erro:

Uncaught (in promise) TypeError: itens.forEach is not a function

Renato Machado
Manager Carlos Ferreira 09/02/2023

Se tiver um print, com os detalhes do erro fica mais fácil para eu te ajudar como você merece.

https://uploaddeimagens.com.br/

Carlos Ferreira
Criador Renato Machado 09/02/2023

professor Carlos

se vc entrar nesse link e ir no console consegue ver

https://acessohost.com.br/testeApi/

 

erro:

Resultado Objectcurrent_page: 1data: (3) [{…}, {…}, {…}]first_page_url: "http://produtos.acessohost.com.br/api/products?page=1"from: 1last_page: 1last_page_url: "http://produtos.acessohost.com.br/api/products?page=1"links: (3) [{…}, {…}, {…}]next_page_url: nullpath: "http://produtos.acessohost.com.br/api/products"per_page: 10prev_page_url: nullto: 3total: 3[[Prototype]]: Object

(index):31 Uncaught (in promise) TypeError: itens.forEach is not a function

 

    at list ((index):31:23)

 

Renato Machado
Manager Carlos Ferreira 09/02/2023

Não achei o código JS no GitHub, mas deu para entender melhor o erro com o debug que você enviou.

Se observar o retorno da API, os dados em sí são retornados em "data", logo, você tem o "data" da response, e o "data" dos dados.

--

Para conseguir entender melhor, faça debugs:
console.log(data);
console.log(data.data);

Carlos Ferreira
Criador Renato Machado 09/02/2023

professor Carlos esse é o js:

async function list(){ const url = "https://produtos.acessohost.com.br/api/products"; const params = { method : 'GET', mode: 'cors', cache: 'default' }; const response = await fetch(url, params); const data = await response.json(); console.log("Resultado", data); let itens = data; //let itens = data.results; //pokemon esta dentro da varivel result //tanto faz map ou foreach, no entanto o map é só pra objetos o que é o caso aqui itens.forEach(item =>{ let lista = document.querySelector(".lista"); lista.innerHTML += `

  • Name: ${item.name}
  • URL: ${item.description}
  • URL: ${item.image}

`; }); } list();

Não fez sentido pra mim sua resposta, desculpa, pois o erro só ocorre qdo utilizo paginate na api, qdo uso get, funciona sem problemas

Renato Machado
Manager Carlos Ferreira 09/02/2023

Fica calmo, que vou te ajudar. Tá bom? :-)

--

Quando usa API resource ou paginate, o response da api é diferente, por isso o erro no seu loop;

--

Qual foi o log de retorno?
console.log(data); (print por favor)

Carlos Ferreira
Criador Renato Machado 09/02/2023

Professor Carlos, consegui aqui, estava errado meu escript:

errado -> let itens = data;

correto -> let itens = data.data; 

como vc disse "dados em sí são retornados em "data"", me atentei a isso e deu certo, obrigado pela atenção

Renato Machado
Manager Carlos Ferreira 09/02/2023

Show de bola amigo, parabéns!

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!