【问题标题】:Missing movies attribute on result Vue GraphQL结果Vue GraphQL上缺少电影属性
【发布时间】:2019-11-05 11:17:21
【问题描述】:

我是前端开发人员,所以第一次接触 vue 和 graphql,我不知道该如何处理这个错误:

Missing getMovies attribute on result {movies: Array(20)}

这是我的代码,我可以在 chrome 的开发工具的响应中看到数据已成功获取:

{"data":{"movies":[{"__typename":"Movie","id":11,"overview":

代码如下:

<template>
  <div class="hello">
    <ul>
      <li v-for="movie in movies" :key="movie.id">{{movie.title}}</li>
    </ul>
  </div>
</template>

<script>
import gql from 'graphql-tag'
export default {
  name: 'HelloWorld',
  data(){
    return {
      movies: []
    }
  },
  apollo: {
    getMovies: {
      query: gql`
        query StarWars {
          movies(query: "Star Wars") {
            title
            overview
            poster_path
            id
          }
        }      
      `,
      result({data}){
        this.movies = data.movies
      }
    }
  },
  props: {
    msg: String
  }
}
</script>

【问题讨论】:

    标签: vue.js graphql apollo vue-apollo


    【解决方案1】:

    根据this issue,您的apollo 属性应该有一个匹配的data 属性,但在这种情况下它们不匹配(一个名为moviesgetMovies)。改变一个或另一个:

    export default {
      name: 'HelloWorld',
      data(){
        return {
          movies: []
        }
      },
      apollo: {
        movies: {
          query: gql`
            query StarWars {
              movies(query: "Star Wars") {
                title
                overview
                poster_path
                id
              }
            }      
          `
        }
      },
      props: {
        msg: String
      }
    }
    

    没有必要在result 中自己设置data

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 2019-12-19
      • 2020-11-12
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2021-12-10
      • 2014-05-12
      • 2020-09-26
      相关资源
      最近更新 更多