Olá Maria, tudo bem com você?
Eu ainda não entendo muito de spring, mas vou responder com base nos conhecimentos de javascript, pois acredito que ai que está acontecendo o problema
Quando utilizamos o fetch
estamos criando uma promise que leva um tempo para obter o seu resultado, por isso quando você da console.log(fetch
ele esta devolvendo uma Promise<Peding>
, ou seja, pedimos para printar no console antes de terminar de executar o nosso fetch
Para corrigir isso precisamos utilizar o then
que só é executado após terminar a execução da promise, então acredito que o que você quer seria obtido da seguinte maneira:
fetch('http://localhost:8080/todos', { mode: 'no-cors'})
.then( data => data.json())
.then(console.log)
.catch( error => console.log(error));
O que eu estou fazendo é o seguinte, eu peço para ele fazer a requisição no nosso endpoint, e após terminar é para ele pegar o resultado ( que eu estou chamando de data
) e transformar em um json (para poder ter acesso aos dados retornados pelo nosso servidor) e após isso ele vai para o segundo then que irá printar na tela o resultado obtido.
Aqui poderíamos pegar o dados e salvar em um array, ou passar para uma função, por exemplo:
fetch('http://localhost:8080/todos', { mode: 'no-cors'})
.then( data => data.json())
.then( dados => meuArray.push(dados))
.catch( error => console.log(error));
Ou seja transformamos o data
em um json e isso retorna uma nova promise, iremos pegar o resultado (em formato json) dentro do atributo dados
e estou passando uma função para adicionar os dados dentro de um array :)
Caso de erro ele irá para o catch apenas para devolver o erro que aconteceu!
Aqui na alura temos um curso apenas em relação afetch api
para entender todas as particularidades dessa ferramenta: Fetch API: Consumindo uma API Rest com Javascript
Você pode testar?
Abraços e Bons Estudos!