Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Seguindo o curso com minha própria api

Bom dia pessoal. Conclui o curso de Vue.js as 2 parte, para consolidar meu conhecimento, estou seguindo o curso novamente, mais com uma API que criei. Na hora de obter os resultados no banco eu consigo pushar os arquivos que vem do banco de dados. (Consigo ver no console.log). Mais na hora de renderizar na tela, não aparece. Eu até pensei que fosse meu código e tudo mais, mais quando eu coloco a API do curso funciona normal. Alguém pode me dar uma luz do que pode ser. Detalhe que minha API está praticamente igual a que disponibiliza no curso e seguindo uma base do curso de node. Alguém tem alguma ideia do que esta acontecendo?

Desde já agradeço.

8 respostas

Você no console log do navegador ou do servidor?

Bom dia Flavio.

Do navegador!

API está testada tbm do lado do servidor, com todos os métodos funcionando!

Eu consigo ver a promisse vindo no console.log mais na hora de renderizar, não mostra nada.

Cole o componente que busca os dados e exibe na view.

<template>
  <div id="app" class="container">
    <h1>{{ title }}</h1>
    <div class="card-deck align-items-center justify-content-center">
      <div v-for="photo in photos">
        <my-card :title="photo.titulo" :description="photo.descricao">
          <img class="card-img-top" :src="photo.url">  
        </my-card>
      </div>
    </div>
  </div>
</template>

<script>
import Card from './components/shared/Card.vue'

export default {
  name: 'app',

  components: {
    'my-card': Card
  },

  data () {
    return {
      title: 'Photos',
      photos: []
    }
  },

  created() {
    this.$http
      .get('http://localhost:3000/v1/fotos')
      .then((resp) => this.photos = resp.data, (err) => console.log(err))
  }
}
</script>
<style>

</style>

Só esta com o link da API do curso. Que funciona. hehe No caso eu estou usando o axios e o vue-axios. O que não muda muito né... Mais com o vue-resource eu testei tbm... E não funcionou, como disse, eu acho que não é o meu codigo, ja que com a API do curso funciona. Acho que pode ser algo da minha API. Mais ela esta quase igual do curso.

Com axious muda sim. Enfim, onde está o código que você faz o console.log e vê os dados retornados? Não achei no seu código. Cole o código completo com essa adição.

Cole também a estrutura dos dados retornados.

Segue os print:-

https://ibb.co/edBwaH (codigo)

https://ibb.co/g78ypc (console do navegador, recebendo os dados)

solução!

Prof. Boa tarde...

É desencana, que consegui solucionar. Veja que no console do navegador, está lá Array com 6 posições. E no objeto entregue tem uma propriedade photos, que minha API está entregado no Objeto. Para conseguir renderizar eu precisei fazer :-

this.photos = resp.data.photos

e não

this.photos = res.data

E o metodo completo:

created() {
    this.$http
      .get('http://localhost:3000/v1/fotos')
      .then((resp) => this.photos = resp.data.photos, (err) => console.log(err))
  }

Assim consegui fazer. Mais por que eu tive que colocar .photos no final?

Foi você que definiu isso em sua api.