ApolloClient с Angular

Я пытаюсь выполнить запрос graphql, но у меня возникает сетевая ошибка в клиенте. Если я проверю свой сетевой уровень в хроме, результат будет правильным. Но в моем угловом компоненте этого нет.

Мой запрос:

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];
    }
);
}

Мой сетевой уровень:  введите описание изображения здесь

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
  }
}

Кто-нибудь может мне помочь? Я использую angular 4.3.0 и

"apollo-angular": "^ 1.0.1",

"apollo-angular-link-http": "^ 1.0.2",

"apollo-cache-inmemory": "^ 1.1.12",

"аполлон-клиент": "^ 2.2.8"


person Anderson Faria Silva    schedule 05.04.2018    source источник


Ответы (1)


Я считаю, что вы не выполняете правильное отображение в своей подписке. В вашем случае попробуйте следующее:

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));
person kat1330    schedule 06.04.2018