具有角度的ApolloClient

时间:2018-04-05 14:21:19

标签: angular apollo apollo-client

我正在尝试执行graphql查询,但我在客户端遇到网络错误。如果我在chrome中检查我的网络层,结果是正确的。但在我的角度组件中没有。

我的查询:

export const GetAllCorpoQuery = gql`
query getAllCorpo($status: Boolean) {
    getAllCorpo(status: $status) {
        id
    }
}

`;

我的组件方法:

filter() {
    const {nome, status} = this.entity
    const variables = {
        status
    };
    this.apollo.query<any>({query: GetAllCorpoQuery, variables, fetchPolicy: 'network-only'}).subscribe(({data}) => {
        console.log(data);
        this.corpos = data.getAllCorpo;

        const nome   = new MapColunaAtributo(this.colunas[0], 'nome');
        const status = new MapColunaAtributo(this.colunas[1], 'status');
        this.listPesquisa = [nome, status];
    }
);
}

我的网络层: enter image description here

The error:

    ERROR Error: Uncaught (in promise): Error: Network error: Error writing result to store for query:
 query getAllCorpo($status: Boolean) {
  getAllCorpo(status: $status) {
    id
    __typename
  }
}

Cannot read property 'getAllCorpo' of undefined
Error: Network error: Error writing result to store for query:
 query getAllCorpo($status: Boolean) {
  getAllCorpo(status: $status) {
    id
    __typename
  }
}

有人可以帮助我吗? 我使用角度4.3.0和

“apollo-angular”:“^ 1.0.1”,

“apollo-angular-link-http”:“^ 1.0.2”,

“apollo-cache-inmemory”:“^ 1.1.12”,

“apollo-client”:“^ 2.2.8”

1 个答案:

答案 0 :(得分:0)

我相信您没有在订阅中进行正确的映射。在你的情况下试试这个:

this.apollo.query<any>({query: GetAllCorpoQuery, variables, fetchPolicy: 'network-only'}).subscribe(data => {
        console.log(data);
        this.corpos = data.getAllCorpo;

        const nome   = new MapColunaAtributo(this.colunas[0], 'nome');
        const status = new MapColunaAtributo(this.colunas[1], 'status');
        this.listPesquisa = [nome, status];
    }

您的回复是不同的结构,然后在订阅中指定。

作为回应,你有这样的结构:

{
  getAllCorpo: ...
}

但是在订阅中你试图像这样访问:

subscribe(({data}) => ...

我认为问题在那里。你必须这样使用:

subscribe(data => console.log(data.getAllCorpo));